#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:sking
#Python3字典操作詳解 Python3字典操作大全
#字典是無(wú)序的(因?yàn)樗鼪]有下標(biāo)),key必須是唯一的
#字典是可變的,可以修改和添加
#創(chuàng)建字典
info = {'haha':12,'heihei':13,'wowo':45}
#查找字典的值value
#方法1
print(info['heihei']) #13 此方法必須確定字典中存在此key否則會(huì)報(bào)錯(cuò)
#方法2 推薦使用
print(info.get('heihei')) #13 當(dāng)字典中沒有此key時(shí),會(huì)返回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刪除字典的同時(shí)會(huì)返回該key對(duì)應(yīng)的值
print(info) #{'wowo': 14, 'loulou': 15}
#方法3
b = info.popitem() #隨機(jī)刪除一個(gè)字典元素
print(b) #('loulou', 15) popitem刪除字典的同時(shí)會(huì)以元組的形式返回該元素的key和value
print(info) #{'wowo': 14}
#刪除整個(gè)字典
#del info
#print(info) #NameError: name 'info' is not defined
info = {'haha':12,'heihei':13,'wowo':45}
#判斷某個(gè)key是不是在這個(gè)字典里
print('wahaha' in info) #False
print('haha' in info) #True
#多級(jí)字典的嵌套和操作
book = {
'中國(guó)':{'a':['好','不好'],'b':['好','不好']},
'美國(guó)':{'c':['好','不好'], 'd':['好','不好']},
'日本':{'e':['好','不好']}
}
print(book)
#修改多級(jí)字典的value
book['中國(guó)']['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轉(zhuǎn)成list
print(list(info.keys())) #['haha', 'heihei', 'wowo'] 將字典所有的key轉(zhuǎn)成list
print(info.setdefault('ww',78)) #78
print(info) #{'haha': 12, 'heihei': 13, 'wowo': 45, 'ww': 78} 增加一個(gè)'ww': 78 字典對(duì)象
print(info.setdefault('haha', 34)) #12
print(info) #{'haha': 12, 'heihei': 13, 'wowo': 45, 'ww': 78}
#'haha'的value并沒有改成34
# Python 字典 setdefault() 方法和 get() 方法類似,返回指定鍵的值,
# 如果鍵不在字典中,將會(huì)添加鍵并將值設(shè)置為一個(gè)指定值,默認(rèn)為None。
# get() 和 setdefault() 區(qū)別: setdefault() 返回的鍵如果不在字典中,
# 會(huì)添加鍵(更新字典),而 get() 不會(huì)添加鍵。
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()方法合并兩個(gè)字典,并修改/增加字典對(duì)象
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)]
#字典的循環(huán)
info = {'haha':12,'heihei':13,'wowo':45}
#方法1(推薦使用)
for i in info:
print(i, info[i]) #方法1 效率比較高,因?yàn)樗侵苯油ㄟ^(guò)key找過(guò)val
"""
haha 12
heihei 13
wowo 45
"""
#方法2
for key,val in info.items(): #效率沒有方法高,因?yàn)樗枰炎值滢D(zhuǎn)成列表
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
{'中國(guó)': {'a': ['好', '不好'], 'b': ['好', '不好']}, '美國(guó)': {'c': ['好', '不好'], 'd': ['好', '不好']}, '日本': {'e': ['好', '不好']}}
{'中國(guó)': {'a': ['好', '不好'], 'b': ['ok', '不好']}, '美國(guó)': {'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]