1. 编程学习网 > 编程教程 > Python教程 > python字典

python字典

字典

我们在第一节的概述里面介绍了字典这一存储”键值对”的容器,实际上,字典的原型就是我们C语言中遇到的哈希表,下面介绍它的操作

1.创建字典

我们首先要构建键值对。其中键可以为我们之前学过的任一不可变类型,比如字符串(居多)、整型或元组(列表不可以)等数据类型,值可以是我们之前学过的任一种数据类型,键和值之间用冒号隔开,以此来表示一个键值对,再将这些键值放在一个大括号中,每个键值对使用逗号隔开,就构成了一个字典。

输出结果:
{'diaochan': 87945612, 'guanyu': '789246012', 'liubei': [2, 3, 4, 5, 6, 8, 6]}
<class 'dict'>     
我们这里分别使用了三种不同的数据类型来表示QQ号,也就是“值”,并输出了字典的类型为”dict”,所以我们还可以使用dict()方法来构建字典,这时构建方法更加灵活。

输出结果:
{'zhangfei': 20, 'caocao': 32}
{'zhangfei': 20, 'caocao': 32}
{'zhangfei': 20, 'caocao': 32}
{'zhangfei': 20, 'caocao': 32}
True
b1-b3的三个字典构建方法是使用元组和列表的嵌套构建键值对,其中可以在列表里面套元组,也可以在元组里面套列表,还可以同种类型嵌套。b4是直接使用等号拼接键值对,再将键值对作为参数,传入dict()函数中,构建字典,最后打印b1-b4的值,可以发现是完全相同的。
 
我们还可以使用zip()函数将两个序列并排打包,一个作为键,一个作为值,构建字典。


输出结果:
{'zhouyu': 30, 'zhugeliang': 32, 'xiaoqiao': 26}
两个序列使用列表、元组具有相同效益,使用zip()函数时,传入参数的先后顺序决定了哪个是键,哪个是值。
 
如果只有键,值还不确定的时候,可以使用fromkeys()来创建值为空的字典。


输出结果:
{'sunquan': None, 'sunce': None, 'sunshangxiang': None}
这里的None,可以先理解为一个值为空的占位符,好比我们去图书馆占座,用书本放在桌上但是人不在,代表这个位置有人了,以后随时可以补上这个空缺。

2.字典

字典虽然不能通过下标访问,但是可以通过键来找值,如果直接将键作为索引找值,那么键不存在时,会报错,而使用get()方法会得到一个None,还可以给这个不存在的键定义一个值。

也可以使用循环访问字典:


输出结果:
sunce
sunquan
sunshangxiang
sunce:10
sunquan:20
sunshangxiang:30
 
可以看出如果直接访问字典的元素,只能访问到键,想要得到值,还必须利用得到的键再去找值。
但是,items()方法可以帮助我们遍历字典中的键值对,返回对象是元组。还有keys()方法可以返回字典中所有的键,values()方法可以返回字典中所有的值,所以我们还可以这样来访问键值对:



输出结果:
dict_keys(['sunce', 'sunquan', 'sunshangxiang']) <class 'dict_keys'>
dict_values([10, 20, 30]) <class 'dict_values'>
dict_items([('sunce', 10), ('sunquan', 20), ('sunshangxiang', 30)]) <class 'dict_items'>
sunce
sunquan
sunshangxiang
10
20
30
('sunce', 10)
('sunquan', 20)
('sunshangxiang', 30)

3.字典操作

字典的许多和我们之前的列表元组等相似。我们以上述的字典a和b为例。如果要在一个字典后面增加新的元素,可以直接给出一个新键,然后赋值的语句,a[‘NewKey’]=value,如果要修改一个键值对,那么只需要重新要修改的键赋值就好了,它会自动覆盖之前的值,即a[‘OldKey’]=value,其他常用方法如下表所示。
方法 功能 使用
Len() 返回字典中键值对的数量 len(a)
in/not in 判断字典中是否含有键为’key’的元素 ‘key’ in/not in a
update() 将字典b的元素添加到a中,如果有键相同,值覆盖 a.update(b)
del 删除键为’key’的项 del a[‘key’]
pop() 删除键为’ket’的项,返回该键对应的值 a.pop(‘key’)
popitem() 随机删除并返回一个键值对 a.popitem()
clear() 清空字典所有元素 a.clear()
 

输出结果:
{'sunce': 10, 'sunquan': 20, 'sunshangxiang': 30, 'country': 'wu'}
{'caopi': 30, 'caozhi': 40, 'caozhang': 50, 'country': 'wei'}
4 4
True False
{'sunce': 10, 'sunquan': 20, 'sunshangxiang': 30, 'country': 'wei', 'caopi': 30, 'caozhi': 40, 'caozhang': 50}
{'sunce': 10, 'sunquan': 20, 'sunshangxiang': 30, 'caopi': 30, 'caozhi': 40, 'caozhang': 50}
{'caozhi': 40, 'caozhang': 50, 'country': 'wei'} 30
{'caozhi': 40}
{}


本文由IT教学网整理发布,转载请注明出处:http://www.itjx.com/jiaocheng/Python/2020/0114/517.html

联系我们

在线咨询:点击这里给我发消息

咨询电话:400-998-2681

工作时间:7*24小时无休