一、定义
字典是一种“key-value”成对出现的数据类型,中间用冒号把key与value隔,不同的数据用逗号隔开,全部数据用大括号括起来
info = { 'stu1101': "TengLan Wu", 'stu1102': "LongZe Luola", 'stu1103': "XiaoZe Maliya", }
注:key值尽量不要写中文,可能会出现不兼容
二、特性
1.无序性
2.key值唯一性(无重复)
三、方法
1.取值(查找、获取)
print(info['stu1103'])
通达key值来取。此方法如果字典里没有该键值,会报错(KeyError)。
print(info.get('stu1104'))
此方法是安全地取值方法。如遇到没有该键值的情况下,输出None,不报错。
2.修改
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan info = { 'stu1101': "TengLan Wu", 'stu1102': "LongZe Luola", 'stu1103': "XiaoZe Maliya", } print(info) #print(info['stu1103']) info['stu1103'] = "小泽玛丽亚" info['stu1104'] = "Cangjingkong" print(info)
可以直接通过赋值的方式来修改,如果没有这个key值,就直接增加
3.删除
del info['stu1101'] info.pop('stu1102') info.popitem() #随机删除一个,少用
4.判断某个key是否在字典里
print('stu1104' in info)
返回Ture或False
注:在python 2.x中的用法是: info.has_key('stu1104'),效果一样
5.多级字典嵌套的操作
可以层层嵌套
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan av_catalog = { "欧美":{ "www.youporn.com": ["很多免费的,世界最大的","质量一般"], "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"], "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"], "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"] }, "日韩":{ "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"] }, "大陆":{ "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"] } } av_catalog['大陆']["1024"][1] = "可以在国内做镜像" print(av_catalog)
6.其他方法
6.1 setdefault
av_catalog.setdefault('大陆',{'www.qq.com':[1,2]}) #先到字典找“大陆”,如果有就返回,没有,就创建
6.2 update
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan info = { 'stu1101': "TengLan Wu", 'stu1102': "LongZe Luola", 'stu1103': "XiaoZe Maliya", } dic_a = { 'stu1101': 'Wenxh', 1:10, 2:5, } info.update(dic_a) #两个字典合并,key值一样的就会被更新,没有的就加进去 print(info)
6.3 items
把字典转成列表,每条数据是元组。
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan info = { 'stu1101': "TengLan Wu", 'stu1102': "LongZe Luola", 'stu1103': "XiaoZe Maliya", } dic_a = { 'stu1101': 'Wenxh', 1:10, 2:5, } info.update(dic_a) print(info) print(info.items())
dict_items([('stu1101', 'Wenxh'), ('stu1102', 'LongZe Luola'), ('stu1103', 'XiaoZe Maliya'), (1, 10), (2, 5)])
6.4 fromkeys
初始化一个新字典
dict_b = dict.fromkeys([5,6,7,8]) dict_c = dict.fromkeys([5,6,7,8],'test') print(dict_b) #{5: None, 6: None, 7: None, 8: None} print(dict_c) #{5: 'test', 6: 'test', 7: 'test', 8: 'test'}
一般用这个方法来创建只有一层的字典,多层的字典不要用此方法!
四、循环打印
for i in dict_c: print(i,dict_c[i])
或者:
for i,j in dict_c.items(): print(i,j)
数据量大时强烈建议用第一个方法!!