Python标准数据类型之字典(Dict)详解

鳄鱼君

发表文章数:642

热门标签

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Python » Python标准数据类型之字典(Dict)详解

Python中的Dict(字典)

字典(dictionary)是Python中另一个非常有用的内置数据类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。在确保你能正确理解字典,它非常重要,你需要先参考:Python中的条件控制语句

字典是一种映射类型,它的元素是键值对。字典用 { } 包裹,它是一个无序的且包含 键(key) : 值(value) ,不包括空字典。键(key)必须使用不可变类型。每个键值对用分开。在同一个字典中,键(key)必须是唯一的。

创建一个字典有以下几种方式:

dict1={} #创建一个空字典

dict(a='a', b='b', t=1) #通过设置关键字,使用dict函数
{x: x**2 for x in (2, 4, 6)}  #构造字典,":"前面值为x,":"后面值为x*2 字典生成式
dict([('baidu', 1), ('Google', 2), ('Taobao', 3)]) #构造字典
dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函数方式来构造字典

Python字典键的特性

字典是我们以后经常需要使用的类型,所以基础需要打牢固,那么字典键的特性非常重要:

  • 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。
  • 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。

对应每一条特性,我们以下面的两个代码演示说明:

dict1={'name':'e1yu','name':'zjj','age':18}
print(dict1) #{'name': 'zjj', 'age': 18}
dict1={ ["name"]:"e1yu","url":"e1yu" }  #这个实例会直接报错,字典里面的键不能是列表,但是值可以为列表
dict1={ "name":["e1yu","url","e1yu"] }

Python字典内置函数

函数 描述
clear() 删除字典内所有元素
copy() 返回一个字典的浅复制
fromkeys(seq,val) 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
key in dict 如果键在字典dict里返回true,否则返回false
items() 以列表返回可遍历的(键, 值) 元组数组
keys() 返回一个迭代器,可以使用 list() 来转换为列表
setdefault(key,default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
update(dict2) 把字典dict2的键/值对更新到dict里
values() 返回一个迭代器,可以使用 list() 来转换为列表
pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。
否则,返回default值。
popitem() 随机返回并删除字典中的最后一对键和值。

有关字典的一些使用案例

clear()方法很简单不再演示,copy()方法需要重点学习,可参考:深拷贝和浅拷贝详解,我们先来看一下fromkeys()方法,它是dict中的一个方法:

print(dict.fromkeys(['e1yu','zjj','wff'],'最全的教程集合'))
#{'e1yu': '最全的教程集合', 'zjj': '最全的教程集合', 'wff': '最全的教程集合'}

get()

dict1=dict( [('www.e1yu.com','最全的教程集合'),('a','a'),('b','b'),('c',1)] ) #创建字典
print(dict1.get('www.e1yu.com')) #获取键为www.e1yu.com的值,如果不存在返回None
print(dict1.get('f'),'不存在f')

如果key不存在,可以返回None,或者自己指定的value。你不要用get来获取值,这样没有意义。

key in dict

dict1=dict( [('www.e1yu.com','最全的教程集合'),('a','a'),('b','b'),('c',1)] ) #创建字典
if 'a' in dict1:
    print('字典dict1中存在键a')

items()

有时候我们呢需要对字典进行循环打印出键和对应的值,通常有下面的两种方式:

dict1=dict( [('www.e1yu.com','最全的教程集合'),('a','a'),('b','b'),('c',1)] ) #创建字典
for k,v in dict1.items(): #键、值
    print(k,v)
for i in dict1: #单独打印i的话,就是循环打印字典中的key
    print(i,dict1[i]) #通过key,获取value

keys()和values()

dict1=dict( [('www.e1yu.com','最全的教程集合'),('a','a'),('b','b'),('c',1)] ) #创建字典
print(list(dict1.keys())) #返回dict1中所有的键,并存入list列表
print(list(dict1.values())) #返回dict1汇总所有的值,并存入list列表
print(type( dict1.keys() ),type(dict1.values()) ) #<class 'dict_keys'> <class 'dict_values'>

pop()和popitem()

dict1=dict( [('www.e1yu.com','最全的教程集合'),
             ('a','a'),('b','b'),('c',1),]) #创建字典

del dict1['a'] #删除
dict1.pop('b') #删除
dict1.popitem() #不带参数为随便删除

print(dict1)

setdefault()

dict1=dict( [('www.e1yu.com','最全的教程集合'),
             ('a','a'),('b','b'),('c',1),]) #创建字典

dict1.setdefault('name','zjjsb') #该方法会从dict里面寻找是否存在,存在就返回原值,不存在就创建后面的值
print(dict1)

update()

dict1=dict( [('www.e1yu.com','最全的教程集合'),
             ('a','a'),('b','b'),('c',1),]) #创建字典
dict2={'name':'zjj','age':18}
dict1.update(dict2) #将dict2字典和dict1字典融合,若字典存在交叉,则更新字典
print(dict1) #{'www.e1yu.com': '最全的教程集合', 'a': 'a', 'b': 'b', 'c': 1, 'name': 'zjj', 'age': 18}

– END –

标签:

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《Python标准数据类型之字典(Dict)详解》 发布于2019-12-05

分享到:
赞(1) 赏杯咖啡

评论 抢沙发

8 + 3 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册