前面我们已经学习了Python的字符串,列表,元组,这一篇我们将学习字典,字典的使用频率是非常高,跟前面几篇一样,只要你用Python编程,就避不开Python字典。
一、创建字典
字典由键(key)和对应的值(value)成对组成。字典也被称作关联数组或哈希表。基本语法如下:
dict = {'Tom':'52','Alice':'56','Lim':'58'}
字典中的每个键与值用冒号(:)隔开,每对键与值之间用逗号(,)隔开,整体放在花括号中({})。
键必须独一无二,但值则不必 ,我们可以理解,只有键独一无二,才能通过键访问到键所对应的值。
值(value)可以取任何数据类型。
键(key)必须是不可变的,如字符串,数字或元组,而不能用列表。
字典的键(key)是字符类型在字典创建之前没有定义的话,那么键必须用单引号('')或双引号("")包围,否则会报错
dict2 = {Tome: 52, Alice: 56, Lim: 58}报错:NameError: name 'Tome' is not definedTome=52Alice=56dict2 = {Tome: 52, Alice: 56, "Lim": 58} #成功创建字典
字典的键(key)是数字(整型或浮点型),则不需要单双引号包围,可以创建成功
dict2 = {'abc': 123, 89: 37}print(type(dict2))print(dict2[89])
运行截屏:
![8ec4e0a7e1cf84099054c02dc6e255f1.png](https://img-blog.csdnimg.cn/img_convert/8ec4e0a7e1cf84099054c02dc6e255f1.png)
字典的键(key)是元组,则不需要单双引号包围,可以创建成功
dict = {('Tim','Jim'):25,'Tome':26}print(type(dict))print(dict[('Tim', 'Jim')])
运行截屏:
![2fb2af0f0beff24683acd1b3973b9b82.png](https://img-blog.csdnimg.cn/img_convert/2fb2af0f0beff24683acd1b3973b9b82.png)
同一个字典里面键可以分别用单引号和双引号,但是在创建过程中,键用单双引号包围的,全部变成了单引号
dict1 = {'Tom':'52','Alice':'56','Lim':'58'}dict2 = {"Tome":52,"Alice":56,"Lim":58}dict3 = {"Tome": 52, "Alice": 56, 'Lim': 58}
运行截图:
![58c75b134d6e275e3e7e565c74a5a399.png](https://img-blog.csdnimg.cn/img_convert/58c75b134d6e275e3e7e565c74a5a399.png)
如果字典中键有相同的,也可以创建成功,但是所创建的字典中相同键只取了最后一个键和值
dict4 = {"Tome": 52, "Alice": 56, "Tome": 58, 'Tome': 59}print(dict4)print(type(dict4))print(dict4['Tome'])
运行结果截图:
![7503a8e3382a17ec557c52c5439d4500.png](https://img-blog.csdnimg.cn/img_convert/7503a8e3382a17ec557c52c5439d4500.png)
二、访问字典的值
上面的例子中,我们都有通过键获取值。
dict['key'] #如果键key不存在,则会报错dict.get('key') #如果键key不存在,则会返回Nonedict.get('key','not find') #如果不存在,则会返回一个默认值:not finddict = {"Tome": 52, "Alice": 56, "Lim": 58, 'Jim': 59}print(dict["Jim"])print(dict.get("Lim"))print(dict.get('name'))print(dict.get('name',"Li Ming"))print(dict['name'])
运行截图:
![62b2b92013c826294f75869ca0efd960.png](https://img-blog.csdnimg.cn/img_convert/62b2b92013c826294f75869ca0efd960.png)
获取所有的键(key)和值(value)
dict.keys() #获取所有的key值dict.values() #获取所有的values值dict = {"Tome": 52, "Alice": 56, "Lim": 58, 'Jim': 59}print('所有键:',dict.keys())print('所有值:',dict.values())
运行截图:
![47e03aab1b37083928f9c5543f7ace81.png](https://img-blog.csdnimg.cn/img_convert/47e03aab1b37083928f9c5543f7ace81.png)
三、添加Python字典键值对
为字典添加键值非常简单,直接给不存在的key赋值即可。
dict[key] = value
对应说明:
- dict 表示已有的字典名称
- key表示新的键
- value表示新的键所对应的值
dict1 = {'Tom':25}print('字典dict1:',dict1)dict1['Jim'] = 30dict1['Ham'] = 35print('字典dict1:', dict1)
![a43cfc0ef7bb16a9906638706dd284d5.png](https://img-blog.csdnimg.cn/img_convert/a43cfc0ef7bb16a9906638706dd284d5.png)
四、修改Python字典键值对
Python字典中键(key)的名字不能修改,我们可以通过键来修改值(value)
dict1 = {'Tom': 25, 'Jim': 30, 'Ham': 35}print(dict1)dict1['Jim'] = 50 #通过key来修改valueprint(dict1)
运行截屏
![f939784b1eec39db373ffc1ddf630f90.png](https://img-blog.csdnimg.cn/img_convert/f939784b1eec39db373ffc1ddf630f90.png)
五、删除Python字典中的键值对
del dict[key]dict1 = {'Tom': 25, 'Jim': 30, 'Ham': 35}print(dict1)del dict1['Jim'] #删除键值对:'jim':30print(dict1)del dict1['Ham']print(dict1)
运行截屏
![466ba9e118710705fc8c7c1e7889a767.png](https://img-blog.csdnimg.cn/img_convert/466ba9e118710705fc8c7c1e7889a767.png)
六、判断Python字典中是否存在指定的键(key)
我们知道字典中的键是唯一的,那么我们就可以判断字典中是否有对应的键。
key in dict #键在字典中key not in dict #键不在字典中dict1 = {'Tom': 25, 'Jim': 30, 'Ham': 35}print('Tom' in dict1)print('Lim' in dict1)print('Tom' not in dict1)print('Lim' not in dict1)
运行截屏:
![99cdfbb6c7bc5264ed08b36d6ea5fc85.png](https://img-blog.csdnimg.cn/img_convert/99cdfbb6c7bc5264ed08b36d6ea5fc85.png)
结束语:
这一篇我们讲了Python字典中的创建及各种基础的使用技能。还有一些操作方法就没有深入的去讲,因为作为初学者来说,把最基础的原理及操作方法弄懂,弄熟,我觉得应该是最好的。等实际项目中需要用到更复杂的方法我再去查资料,深入学习。下一篇我们将学习集合(set)
原创不易,喜欢就给个赞,点个关注吧!更多的内容可以关注公众号:老树Python推荐阅读:
老树Python:一步一步学Python3(小学生也适用) 第十二篇: 元组tuple类型zhuanlan.zhihu.com![c52f0a1a05f15ebaa21fc90a9375eb7d.png](https://img-blog.csdnimg.cn/img_convert/c52f0a1a05f15ebaa21fc90a9375eb7d.png)
![3253e792893d79043a17c513bd34a9bd.png](https://img-blog.csdnimg.cn/img_convert/3253e792893d79043a17c513bd34a9bd.png)
![162b9cf85d227c8a227a2ce8f2584fa8.png](https://img-blog.csdnimg.cn/img_convert/162b9cf85d227c8a227a2ce8f2584fa8.png)
![60b4bf28b75c65b53acd0d6d634a9525.png](https://img-blog.csdnimg.cn/img_convert/60b4bf28b75c65b53acd0d6d634a9525.png)