字典是另一種可變容器模型,且可存儲任意類型對象。
字典的每個鍵值 key=>value 對用冒號 : 分割,每個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中 ,格式如下所示:
dict = {key1 : value1, key2 : value2 }
1.鍵一般是唯一的,如果重復最后的一個鍵值對會替換前面的,值不用是唯一的,所以值可以是相同的。
2.值可以取任何數據類型,但鍵必須不可變,所以可以用數字,字符串或元組充當,所以用列表,集合就不行,但卻也可以用函數,對象。
訪問字典里的值
把相應的鍵放入熟悉的方括弧,如下實例:
dict = {'Name': 'Sora', 'Age': 17, 'Class': 'First'}
print( dict['Name'], dict['Age'])
如果用字典里沒有的鍵訪問數據,會拋出Keyerror異常,如下:
dict['simon']: Traceback (most recent call last): File "test.py", line 5, in <module> print "dict['simon']: ", dict['simon'] KeyError: 'simon'
修改字典
向字典添加新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下實例:
dict['Name']='Simon' #字典已有Name的key,所以是更改操作 dict['gender']='male' #字典不存在gender的key,所以是增加鍵值對操作
刪除字典元素
能刪單一的元素也能清空字典,清空只需一項操作。
顯示刪除一個字典用del或者pop命令,但需要注意的是del無返回值,pop會返回被刪除的key所對應的value,如下實例:
dict = {'Name': 'Sora', 'Age': 17, 'Class': 'First'}
del dict['Class'] v=dict.pop('Name')
print(dict,v)
輸出: {'Age': 17} Sora
字典內置函數&方法
Python字典包含了以下內置函數:
cmp(dict1,dict2) #比較兩個字典元素,如果兩個字典的元素相同返回0,如果字典dict1大於字典dict2返回1,如果字典dict1小於字典dict2返回-1。 len(dict) #計算字典元素個數,即鍵的總數。 str(dict) #輸出字典可打印的字符串表示。 type(dict) #返回輸入的變量類型,如果變量是字典就返回字典類型。
Python字典包含了以下內置方法:
dict.clear() # #刪除字典內所有元素 dict.copy() # #返回一個字典的淺復制 dict.fromkeys(seq[, val]) #創建一個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應的初始值 dict.get(key, default=None) #返回指定鍵的值,如果值不在字典中返回default值 dict.has_key(key) #如果鍵在字典dict里返回true,否則返回false dict.items() #以列表返回可遍歷的(鍵, 值) 元組數組 dict.keys() #以列表返回一個字典所有的鍵 dict.setdefault(key, default=None)和get() #類似, 但如果鍵不存在於字典中,將會添加鍵並將值設為default dict.update(dict2) #把字典dict2的鍵/值對更新到dict里 dict.values() #以列表返回字典中的所有值 pop(key[,default]) #刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。 popitem() #返回並刪除字典中的最后一對鍵和值。
in 操作符
Python 字典 in 操作符用於判斷 鍵 是否存在於字典中,如果鍵在字典 dict 里返回 true,否則返回 false。
而 not in 操作符剛好相反,如果鍵在字典 dict 里返回 false,否則返回 true。
dict = {'Name': 'nb', 'Age': 17}
# 檢測鍵 Age 是否存在
if 'Age' in dict:
print("鍵 Age 存在")
else :
print("鍵 Age 不存在")
注意:
字典在被迭代時,不可以直接對其元素進行刪除或者增加(但可以修改):
dict = {'Name': 'Sora', 'Age': 17, 'Class': 'First'}
for i,k in dict.items():
del dict[i] # dict.pop(i)
print(dict)
報錯(大意是字典長度在迭代時被更改): # 由此也驗證,字典在迭代時是不能刪或者增的
RuntimeError: dictionary changed size during iteration
如果在迭代中刪除字典的元素, 可使用以下方法:
dict = {'Name': 'Sora', 'Age': 17, 'Class': 'First'}
for key in list(dict):
dict.pop(key)
print(dict)
輸出:
{}
