【Python 3.6.1】字典
字典是一种可变容器模型,可存储任意类型对象,字典就是一组键值对的集合。
字典的每个键值对(key-value)对用冒号(:)分割,每对键值对之间用逗号(,)分割,整个字典包括在大括号{}中
1 2 3 4 5 |
问:哪些类型可以用于键? 答:整数,小数,布尔,字符,元组 问:哪些类型可以用于值? 答:整数,小数,布尔,字符,元组,列表,集合,字典 |
一、创建字典
1 2 3 4 5 6 7 8 9 |
>>> d = {"Oracle":98, "Perl":80, "C++":50} >>> type (d) <class 'dict'> >>> # 创建一个空字典 >>> a = {} >>> print(type(a)) <class 'dict'> >>> |
二、字典中,键可以是整数,小数,布尔,字符,元组,但不能是列表、集合和字典
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# key为字符串 >>> d = {"Oracle":98, "Perl":80, "C++":90} >>> type(d) <class 'dict'> >>> # key为数值 >>> d = {1:'a',2:'b',3:'c'} >>> type(d) <class 'dict'> >>> # key为元组 >>> d = {('a','b'):1,'hello':2} >>> type (d) <class 'dict'> >>> # key为列表 >>> d = {['hello','world']:'test'} Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' >>> |
三、返回指定key的value
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# 通过键查询值,不能通过值查键(为什么呢?因为值有可能是重复的;如果键是重复的,则返回后面的那个键值) >>> d = {"Oracle":98, "Perl":80, "C++":50, "Perl":88} >>> # "Perl"这个key有多个,所以返回的是最后一个key的值 >>> print (d["Perl"]) 88 >>> # 如果键不存在,则报错 >>> print (d["Python"]) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Python' >>> # 使用get返回键值,一样,当有重复的key时返回最后一个key的值 >>> print(d.get("Perl")) 88 >>> # 使用get返回键值,当该key不存在,则返回None >>> print(d.get("Python")) None >>> |
四、更新指定key的value
1 2 3 4 5 |
>>> d = {"Oracle":98, "Perl":80, "C++":50} >>> d["C++"] = 90 >>> d {'Oracle': 98, 'Perl': 80, 'C++': 90} >>> |
五、添加新的kye-value
1 2 3 4 5 |
>>> d = {"Oracle":98, "Perl":80, "C++":90} >>> d["Pascal"] = 100 >>> d {'Oracle': 98, 'Perl': 80, 'C++': 90, 'Pascal': 100} >>> |
六、删除元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
>>> d = {"Oracle":98, "Perl":80, "C++":90} >>> d {'Oracle': 98, 'Perl': 80, 'C++': 90} >>> # 删除“C++” >>> del d['C++'] >>> >>> d {'Oracle': 98, 'Perl': 80} >>> # 清空字典所有元素 >>> d.clear() >>> >>> d {} >>> # 删除字典 >>> d = {"Oracle":98, "Perl":80, "C++":90} >>> d {'Oracle': 98, 'Perl': 80, 'C++': 90} >>> >>> del d >>> >>> d Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'd' is not defined >>> |
键值为列表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# 创建一个值为列表的字典 >>> d = { 1:['zhangsan','lisi','wangwu','zhaoliu'], 2:['beijing','shanghai','tianjin'] } >>> # 返回1键值 >>> print(d[1]) ['zhangsan', 'lisi', 'wangwu', 'zhaoliu'] >>> # 返回1键值中第二个元素lisi >>> print(d[1][1]) lisi >>> # 向2键值中添加'chongqing' >>> d[2].append('chongqing') >>> print(d[2]) ['beijing', 'shanghai', 'tianjin', 'chongqing'] >>> |