字典
字典是Python中唯一的映射類型,採用鍵值對(key-value)的形式存儲數據。
python對key進行哈希函數運算,根據計算的結果決定value的存儲地址,所以字典是無序存儲的,且key必須是可哈希的。可哈希表示key必須是不可變類型,如:數字、字符串、元組。
字典是除列表以外python中最靈活的內置數據結構類型。列表是有序的對象結合,字典是無序的對象集合。兩者之間的區別在於:字典中的元素是通過鍵來存取的,而不是通過偏移存取。
增:
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} dic1['high'] = 175 # 沒有鍵值對,添加 dic1['age'] = 16 # 如果有鍵,則值覆蓋 print(dic1)
結果輸出:
{'age': 16, 'name': 'wuli', 'sex': 'male', 'high': 175}
setdefault()方法:默認爲None
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} dic1.setdefault('weight') #默認爲None print(dic1)
結果輸出:
{'age': 18, 'name': 'wuli', 'sex': 'male', 'weight': None}
有鍵值對,不做任何改變,沒有才添加。
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} dic1.setdefault('weight', 160) #有鍵值對,不做任何改變,沒有才添加。 print(dic1)
結果輸出:
{'age': 18, 'name': 'wuli', 'sex': 'male', 'weight': 160}
刪:pop()、popitem()、del、clear()
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} dic1.pop('age') # 有返回值,按鍵去刪除 print(dic1)
結果輸出:
{'name': 'wuli', 'sex': 'male'}
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} print(dic1.pop('二哥', 'None/沒有此鍵')) # 可設置返回值 print(dic1)
結果輸出:
None/沒有此鍵 {'age': 18, 'name': 'wuli', 'sex': 'male'}
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} dic1.popitem() # 隨機刪除, 有返回值,元組裏面是刪除的鍵值。 print(dic1)
結果輸出:
{'age': 18, 'name': 'wuli'}
del:
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} del dic1['name'] print(dic1)
結果輸出:
{'age': 18, 'sex': 'male'}
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'}
del dic1 # 直接將字典刪除,打印報錯,沒有定義字典
dic1.clear() #清空字典,輸出爲{}
改:
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} dic1['age'] = 16 print(dic1) dic = {'name': 'wuli', 'age': 18, 'sex': 'male'} dic2 = {'name': 'alex', 'weight': 77} dic2.update(dic) print(dic) print(dic2)
結果輸出:、
{'age': 16, 'name': 'wuli', 'sex': 'male'} {'name': 'wuli', 'age': 18, 'sex': 'male'} {'name': 'wuli', 'weight': 77, 'age': 18, 'sex': 'male'}
查:
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} print(dic1.keys()) print(dic1.values()) print(dic1.items())
結果輸出:
dict_keys(['age', 'name', 'sex']) dict_values([18, 'wuli', 'male']) dict_items([('age', 18), ('name', 'wuli'), ('sex', 'male')])
for循環1:
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} for i in dic1: print(i) # 什麼都不寫,默認打印的是鍵,與下面一樣。
結果輸出:
age
name
sex
for循環2:
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} for i in dic1.keys(): print(i)
結果輸出:
age
name
sex
for循環3:
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} for i in dic1.values(): print(i)
結果輸出:
18
wuli
male
其他操作1:
a, b = 1, 2
print(a, b)
結果輸出:
1 2
其他操作2:
a = 1 b = 2 a, b = b, a print(a, b) a, b = [1, 2], [2, 3] print(a, b) a, b = (1, 2) print(a, b)
結果輸出:
2 1 [1, 2] [2, 3] 1 2
其他操作3:
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} for k, v in dic1.items(): print(k, v)
結果輸出:
age 18
name wuli
sex male
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} v1 = dic1['name'] # 如果沒有這個值則報錯 print(v1)
結果輸出:
wuli
get():
dic1 = {'age': 18, 'name': 'wuli', 'sex': 'male'} print(dic1.get('name1')) #不報錯 print(dic1.get('name1', '沒有這個鍵')) #不報錯
結果輸出:
None
沒有這個鍵
dict嵌套:
1 dic = { 2 'name':['alex', 'wusir', 'wuli'], 3 'py9':{ 4 'time': '1213', 5 'learn_money:': 19800, 6 'addr': 'CBD', 7 }, 8 'age': 22 9 } 10 11 dic['age'] = 30 12 dic['name'].append('taibai') 13 print(dic) 14 dic['name'][1] = dic['name'][1].upper() 15 print(dic) 16 17 dic['py9']['female'] = 6 18 print(dic)
結果輸出:
1 {'name': ['alex', 'wusir', 'wuli', 'taibai'], 'py9': {'time': '1213', 'learn_money:': 19800, 'addr': 'CBD'}, 'age': 30} 2 {'name': ['alex', 'WUSIR', 'wuli', 'taibai'], 'py9': {'time': '1213', 'learn_money:': 19800, 'addr': 'CBD'}, 'age': 30} 3 {'name': ['alex', 'WUSIR', 'wuli', 'taibai'], 'py9': {'time': '1213', 'learn_money:': 19800, 'addr': 'CBD', 'female': 6}, 'age': 30}