python 字典操作
1,字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 info={ 2 'student01':'武藤兰', 3 'student02':'泷泽萝拉', 4 'student03':'小泽玛利亚', 5 } 6 print(info)#打印所有的字典要素 7 print(info["student01"]) #如果确定key存在可以用这个方法,否则系统会报错 8 print(info.get("student04"))#不管key是否存在,都会有返回,不会出错 9 print('student03' in info)#查找某个key是否在字典中 10 11 输出: 12 {'student01': '武藤兰', 'student02': '泷泽萝拉', 'student03': '小泽玛利亚'} 13 武藤兰 14 None 15 True
注意:a,字典要素是无序的,它没有下标。
b,键值必须唯一。
2,字典要素的修改和增加
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 info={ 2 'student01':'武藤兰', 3 'student02':'泷泽萝拉', 4 'student03':'小泽玛利亚', 5 } 6 print(info) 7 print(info['student01']) 8 info['student01']="wu tenglan" #修改字典的key的值 9 info['student04']="苍井空" #增加字典的key以及key值 10 print(info) 11 12 输出: 13 {'student01': '武藤兰', 'student02': '泷泽萝拉', 'student03': '小泽玛利亚'} 14 武藤兰 15 {'student01': 'wu tenglan', 'student02': '泷泽萝拉', 'student03': '小泽玛利亚', 'student04': '苍井空'}
3,字典要素的删除
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 info={ 2 'student01':'武藤兰', 3 'student02':'泷泽萝拉', 4 'student03':'小泽玛利亚', 5 } 6 print(info) 7 del (info["student01"]) #python通用方法删除 8 print(info) 9 info.pop("student02") #字典的专用删除方法 10 print(info) 11 12 输出: 13 {'student01': '武藤兰', 'student02': '泷泽萝拉', 'student03': '小泽玛利亚'} 14 {'student02': '泷泽萝拉', 'student03': '小泽玛利亚'} 15 {'student03': '小泽玛利亚'}
4,多级字典的嵌套及操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 AV_catalog={ 2 "欧美":{ 3 "www.youporn.com":["很多免费的","世界最大的","质量一般的"], 4 "www.pornhub.com":["很多免费的","也很大的","质量比youporn高点"], 5 "letmedothistoyou.com":["很多自拍的","高质量图片很多","资源不多,更新慢"], 6 "x-art.com":["质量很高的,真的很高","全部收费,屌丝请绕过"] 7 }, 8 "日韩":{ 9 "tokoy-hot":["质量不清楚","听说收费","个人不喜欢日韩了"] 10 }, 11 "大陆":{ 12 "1024":["全部免费","好人一生平安","服务器在国外,慢"] 13 } 14 } 15 AV_catalog["大陆"]["1024"][1]="可以在国内做镜像" 16 print(AV_catalog["大陆"]["1024"][1]) 17 18 输出: 19 可以在国内做镜像
5,打印字典的key和value
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 info={ 2 'student01':'武藤兰', 3 'student02':'泷泽萝拉', 4 'student03':'小泽玛利亚', 5 } 6 print (info.values()) 7 print (info.keys()) 8 9 输出: 10 dict_values(['武藤兰', '泷泽萝拉', '小泽玛利亚']) 11 dict_keys(['student01', 'student02', 'student03'])
6,setdefault方法:类似get,如果字典中有这个key值则返回value,如果没有key值就创建
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 info={ 2 'student01':'武藤兰', 3 'student02':'泷泽萝拉', 4 'student03':'小泽玛利亚', 5 } 6 info.setdefault("student03",{"苍井空"}) 7 print(info) 8 info.setdefault("student04",{"苍井空"}) 9 print(info) 10 11 输出: 12 {'student01': '武藤兰', 'student02': '泷泽萝拉', 'student03': '小泽玛利亚'} 13 {'student01': '武藤兰', 'student02': '泷泽萝拉', 'student03': '小泽玛利亚', 'student04': {'苍井空'}}
注意:该方法可以防止误覆盖原字典的value
7,合并2个字典:update,该方法可以合并2个字典,合并后,对于键值相同的key的value会用新的value替换
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 info={ 2 'student01':'武藤兰', 3 'student02':'泷泽萝拉', 4 'student03':'小泽玛利亚', 5 } 6 b={ 7 'student01':'冲田杏梨', 8 'student04':'覃蜜', 9 'student05':'erica ellyson' 10 } 11 print(info) 12 info.update(b) 13 print(info) 14 15 输出: 16 {'student01': '武藤兰', 'student02': '泷泽萝拉', 'student03': '小泽玛利亚'} 17 {'student01': '冲田杏梨', 'student02': '泷泽萝拉', 'student03': '小泽玛利亚', 'student04': '覃蜜', 'student05': 'erica ellyson'}
8,把字典转为列表
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 info={ 2 'student01':'武藤兰', 3 'student02':'泷泽萝拉', 4 'student03':'小泽玛利亚', 5 } 6 print(info) 7 print(info.items()) 8 9 输出: 10 {'student01': '武藤兰', 'student02': '泷泽萝拉', 'student03': '小泽玛利亚'} 11 dict_items([('student01', '武藤兰'), ('student02', '泷泽萝拉'), ('student03', '小泽玛利亚')])
注意:该列表中每个要素是一个元组,每个元组有2个要素,第一个是key,第二个是value
9,字典的循环
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 info={ 2 'student01':'武藤兰', 3 'student02':'泷泽萝拉', 4 'student03':'小泽玛利亚', 5 } 6 print(info) 7 for i in info: 8 print(i)#只写i的话,将只打印key 9 10 输出: 11 {'student01': '武藤兰', 'student02': '泷泽萝拉', 'student03': '小泽玛利亚'} 12 student01 13 student02 14 student03 15 for i in info: 16 print(i,info[i])#这样写才能把key和value都带出来 17 输出: 18 student01 武藤兰 19 student02 泷泽萝拉 20 student03 小泽玛利亚
10,第二种姿势的for循环
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 info={ 2 'student01':'武藤兰', 3 'student02':'泷泽萝拉', 4 'student03':'小泽玛利亚', 5 } 6 print(info) 7 for i,o in info.items():#第二种姿势,把字典转换成列表再循环,结果相同,但是效率很低 8 print(i,o) 9 10 输出: 11 {'student01': '武藤兰', 'student02': '泷泽萝拉', 'student03': '小泽玛利亚'} 12 student01 武藤兰 13 student02 泷泽萝拉 14 student03 小泽玛利亚