#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:sking
#Python3字典操作详解 Python3字典操作大全
#字典是无序的(因为它没有下标),key必须是唯一的
#字典是可变的,可以修改和添加
#创建字典
info = {'haha':12,'heihei':13,'wowo':45}
#查找字典的值value
#方法1
print(info['heihei']) #13 此方法必须确定字典中存在此key否则会报错
#方法2 推荐使用
print(info.get('heihei')) #13 当字典中没有此key时,会返回None
#修改字典
info['wowo'] = 14
print(info) #{'haha': 12, 'heihei': 13, 'wowo': 14}
#添加字典元素
info['loulou'] = 15
print(info) #{'haha': 12, 'heihei': 13, 'wowo': 14, 'loulou': 15}
#删除字典元素
#方法1
del info['haha']
print(info) #{'heihei': 13, 'wowo': 14, 'loulou': 15}
#方法2
a = info.pop('heihei')
print(a) #13 pop删除字典的同时会返回该key对应的值
print(info) #{'wowo': 14, 'loulou': 15}
#方法3
b = info.popitem() #随机删除一个字典元素
print(b) #('loulou', 15) popitem删除字典的同时会以元组的形式返回该元素的key和value
print(info) #{'wowo': 14}
#删除整个字典
#del info
#print(info) #NameError: name 'info' is not defined
info = {'haha':12,'heihei':13,'wowo':45}
#判断某个key是不是在这个字典里
print('wahaha' in info) #False
print('haha' in info) #True
#多级字典的嵌套和操作
book = {
'中国':{'a':['好','不好'],'b':['好','不好']},
'美国':{'c':['好','不好'], 'd':['好','不好']},
'日本':{'e':['好','不好']}
}
print(book)
#修改多级字典的value
book['中国']['b'][0] = 'ok'
print(book)
print('+_+_+_+_+_+_+_+_+_+_+_+_+_+_+')
info = {'haha':12,'heihei':13,'wowo':45}
print(info.values()) #dict_values([12, 13, 45]) 打印字典的所有值value
print(info.keys()) #dict_keys(['haha', 'heihei', 'wowo']) 打印字典的所有键key
print(list(info.values())) #[12, 13, 45] 将字典所有的value转成list
print(list(info.keys())) #['haha', 'heihei', 'wowo'] 将字典所有的key转成list
print(info.setdefault('ww',78)) #78
print(info) #{'haha': 12, 'heihei': 13, 'wowo': 45, 'ww': 78} 增加一个'ww': 78 字典对象
print(info.setdefault('haha', 34)) #12
print(info) #{'haha': 12, 'heihei': 13, 'wowo': 45, 'ww': 78}
#'haha'的value并没有改成34
# Python 字典 setdefault() 方法和 get() 方法类似,返回指定键的值,
# 如果键不在字典中,将会添加键并将值设置为一个指定值,默认为None。
# get() 和 setdefault() 区别: setdefault() 返回的键如果不在字典中,
# 会添加键(更新字典),而 get() 不会添加键。
print('+++++++++++++================-')
info = {'haha':12,'heihei':13,'wowo':45}
b = {'ss':99, 'haha':88}
info.update(b) #没有返回值
print(info) #{'haha': 88, 'heihei': 13, 'wowo': 45, 'ss': 99} update()方法合并两个字典,并修改/增加字典对象
print(info.items()) #dict_items([('haha', 88), ('heihei', 13), ('wowo', 45), ('ss', 99)])
#返回字典所有的key和value
print(list(info.items())) #[('haha', 88), ('heihei', 13), ('wowo', 45), ('ss', 99)]
#字典的循环
info = {'haha':12,'heihei':13,'wowo':45}
#方法1(推荐使用)
for i in info:
print(i, info[i]) #方法1 效率比较高,因为它是直接通过key找过val
"""
haha 12
heihei 13
wowo 45
"""
#方法2
for key,val in info.items(): #效率没有方法高,因为它需要把字典转成列表
print(key, val)
"""
haha 12
heihei 13
wowo 45
"""
/
13
13
{'haha': 12, 'heihei': 13, 'wowo': 14}
{'haha': 12, 'heihei': 13, 'wowo': 14, 'loulou': 15}
{'heihei': 13, 'wowo': 14, 'loulou': 15}
13
{'wowo': 14, 'loulou': 15}
('loulou', 15)
{'wowo': 14}
False
True
{'中国': {'a': ['好', '不好'], 'b': ['好', '不好']}, '美国': {'c': ['好', '不好'], 'd': ['好', '不好']}, '日本': {'e': ['好', '不好']}}
{'中国': {'a': ['好', '不好'], 'b': ['ok', '不好']}, '美国': {'c': ['好', '不好'], 'd': ['好', '不好']}, '日本': {'e': ['好', '不好']}}
+_+_+_+_+_+_+_+_+_+_+_+_+_+_+
dict_values([12, 13, 45])
dict_keys(['haha', 'heihei', 'wowo'])
[12, 13, 45]
['haha', 'heihei', 'wowo']
78
{'haha': 12, 'heihei': 13, 'wowo': 45, 'ww': 78}
12
{'haha': 12, 'heihei': 13, 'wowo': 45, 'ww': 78}
+++++++++++++================-
{'haha': 88, 'heihei': 13, 'wowo': 45, 'ss': 99}
dict_items([('haha', 88), ('heihei', 13), ('wowo', 45), ('ss', 99)])
[('haha', 88), ('heihei', 13), ('wowo', 45), ('ss', 99)]
haha 12
heihei 13
wowo 45
haha 12
heihei 13
wowo 45
[Finished in 0.2s]