總目錄:http://www.reibang.com/p/e406a9bc93a9
Python - 子目錄:http://www.reibang.com/p/50b432cb9460
字典
字典是另一種可變?nèi)萜髂P推碜梗铱纱鎯θ我忸愋蛯ο竽洹W值涞拿總€鍵值?key=>value?對用冒號?:?分割,每個鍵值對之間用逗號?,?分割窜管,整個字典包括在花括號?{}?中 ,格式如下所示:
d= {key1:value1,key2:value2}
鍵一般是唯一的所禀,如果重復(fù)最后的一個鍵值對會替換前面的界斜,值不需要唯一。
dict1= {'a':1,'b':2,'b':'3'}
print(dict1['b'])
'3'
print(dict1)
{'a':1,'b':'3'}
值可以取任何數(shù)據(jù)類型眯搭,但鍵必須是不可變的窥翩,如字符串,數(shù)字或元組鳞仙。
一個簡單的字典實例:
dict1= {'Alice':'2341','Beth':'9102','Cecil':'3258'}
也可如此創(chuàng)建字典:
dict1= {'abc':456}
dict2= {'abc':123,98.6:37}
*字典兩大特點:無序寇蚊,鍵唯一
基礎(chǔ)操作
增
dit ={'name':'hx' }
dit['age']=20
print(dit)
{'name':'hx','age':20}
刪
dict1 = {'name': 'hx', 'age': 18, 'class': 1,'cs':1}
del dict1['name']? ? ? ? ? ?#刪除字典中指定鍵值對
print(dict1)
{'age': 18, 'class': 1}
print(dict1.pop('age'))? ? ? ? ? ?#刪除字典中指定鍵值對,并返回該鍵值對的值
18
ret=dict1.pop('age')? ? ? ? ?#這種寫法等同于print(dic4.pop('age'))
print(ret)
18
print(dict1)? ? ? ? ? #已刪除name和age
{'class': 1,'cs':1}
a = dict1.popitem()? ? ? ? ?#隨機刪除某組鍵值對棍好,并以元組方式返回值
print(a, dict1)
('class', 1) {'cs':1}
dict1.clear()? ? ? ? ? # 清空字典
print(dict1)
{}
del dict1? ? ? ? ? ?#刪除整個字典
print(dict1)
報錯
改
dict1={'name':'hx','age':16}
dict1['age']=18
print(dict1)
{'name':'hx','age':18}
查?
dict1={'age': 18, 'name': 'hx', 'hobby': 'girl'}
print(dict1)
{'age': 18, 'name': 'hx', 'hobby': 'girl'}
print(dict1['name'])
hx
print(dict1.keys())? ? ? ? ? ? ?#這里來區(qū)分為什么調(diào)用這些方法要把結(jié)果轉(zhuǎn)換為列表
dict_keys(['age', 'name', 'hobby'])
print(list(dict1.values()))
[18, 'hx', 'girl']
print(list(dict1.items()))? ? ? ? ? #將k-y對以元組的形式輸出
[('age', 18), ('name', 'hx'), ('hobby', 'girl')]
內(nèi)置函數(shù)
get?
函數(shù)返回指定鍵的值仗岸,如果值不在字典中返回默認(rèn)值。
dict1={'name':'hx','age':20}
#鍵存在借笙,不改動扒怖,返回字典中相應(yīng)的鍵對應(yīng)的值
re=dict1.get('age',30)
print(re)
20
#鍵不存在,返回默認(rèn)值
re1=dict1.get('class',none)
print(re1)
none
setdefault??
和get()類似, 如果鍵不存在于字典中业稼,將會添加鍵并將值設(shè)為默認(rèn)值盗痒。
dict1={'name':'hx','age':20}
#鍵存在,不改動低散,返回字典中相應(yīng)的鍵對應(yīng)的值
ret=dict1.setdefault('age',34)
print(ret)
20
#鍵不存在俯邓,在字典中中增加新的鍵值對骡楼,并返回相應(yīng)的值
ret1=dict1.setdefault('hobby','girl')
print(dict)
{'name': 'hx', 'age': 20, 'hobby': 'girl'}
print(ret1)
girl
len? ??
計算字典元素個數(shù),即鍵的總數(shù)稽鞭。
dic6={'name':'hx','age':20}
print(len(dic6))
2
copy?
返回一個字典的淺復(fù)制
dict1= {'user':'runoob','num':[1,2,3]}?
# 引用對象
dict2=dict1
#淺拷貝:深拷貝父對象(一級目錄)君编,子對象(二級目錄)不拷貝,還是引用
dict3=dict.copy()? ? ? ? ?
# 修改 data 數(shù)據(jù)?
dict1['user']='root'
dict1['num'].remove(1)
# 輸出結(jié)果?
print(dict1)?
{'user':'root','num':[2,3]}
print(dict2)?
{'user':'root','num':[2,3]}
#深拷貝一級目錄川慌,修改源字典一級目錄不變吃嘿。
#二級目錄不拷貝,直接引用修改過的元素梦重。 (深淺拷貝說明直達)
print(dict3)?
{'user':'runoob','num':[2,3]}
fromkeys??
用于創(chuàng)建一個新字典兑燥,以序列 seq 中元素做字典的鍵,value 為字典所有鍵對應(yīng)的初始值琴拧。
seq=('name','age','sex')?
dict1=dict.fromkeys(seq)
print("新的字典為 : %s"%str(dict1)) #不指定值
新的字典為:{'age':None,'name':None,'sex':None}
dict1=dict.fromkeys(seq,10)
print("新的字典為 : %s"%str(dict1)) #指定值
新的字典為:{'age':10,'name':10,'sex':10}
key in dict??
如果鍵在字典dict里返回true降瞳,否則返回false
dict1= {'Name':'hx','Age':7}
# 檢測鍵 Age 是否存在?
if 'Age' in dict1:?
? ? print("鍵 Age 存在")?
else:?
????print("鍵 Age 不存在")
鍵 Age 存在
# 檢測鍵 Sex 是否存在?
if 'Sex' in dict1:
????print("鍵 Sex 存在")
else:?
????print("鍵 Sex 不存在")
鍵 Sex 不存在
key not in dict??
如果鍵不在字典dict里返回true,否則返回false
dict1= {'Name':'hx','Age':7}
# 檢測鍵 Age 是否存在
if 'Age' not in dict1:
????print("鍵 Age 不存在")
else:
????print("鍵 Age 存在")
鍵 Age 存在
update?
把字典dict2的鍵/值對更新到dict里
dict1= {'Name':'hx','Age':7}?
dict2= {'Sex':'female'}?
dict1.update(dict2)
print("更新字典 dict :",dict1)
更新字典dict:{'Name':'hx','Age':7,'Sex':'female'}