字典(Dictionary)
經過之前的學習,我們可以知道list 和tuple 可以用來表示有序集合,之前我們那個例子是用list 來儲存了使用者的暱稱
user=['liangdianshui','twowater','两点水']
如果我們需要把使用者的帳號也記錄進去呢?
用list 可以這樣子解決:
user=[['liangdianshui','111111'],['twowater','222222'],['两点水','333333']]
可是這樣表示也不方便,而且很難根據暱稱找到對應的暱稱,且list 越長,耗時越長;這時候就可以用dict (字典)來表示了,Python 內置了字典(dict),dict 全稱dictionary,相當於JAVA 中的map,使用鍵-值(key-value)存儲,具有極快的查找速度。
user={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333'}
1、dict (字典)的創建
#字典是另一個可變容器模型,且可儲存任意類型物件。
字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號({})中,格式如下所示:
dict = {key1 : value1, key2 : value2 }
注意:鍵必須是唯一的,但值則不必。值可以取任何資料類型,但鍵必須是不可變的。
建立dict(字典)實例:
dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333'} dict2={'abc':1234,1234:'abc'}
2、存取dict (字典)
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333'} print(dict1)
輸出的結果:
{'liangdianshui': '111111', 'twowater': '222222', '两点水': '333333'}
這裡要注意的一點是:如果字典中沒有這個鍵,是會報錯的。
3、修改dict (字典)
為字典新增內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333'} print(dict1) # 新增一个键值对 dict1['jack']='444444' print(dict1) # 修改键值对 dict1['liangdianshui']='555555' print(dict1)
輸出的結果:
{'liangdianshui': '111111', 'twowater': '222222', '两点水': '333333'} {'liangdianshui': '111111', 'twowater': '222222', '两点水': '333333', 'jack': '444444'} {'liangdianshui': '555555', 'twowater': '222222', '两点水': '333333', 'jack': '444444'}
4、刪除dict (字典)
透過del 可以刪除dict (字典)中的某個元素,也能刪除dict (字典)
透過呼叫clear() 方法可以清除字典中的所有元素
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333'} print(dict1) # 通过 key 值,删除对应的元素 del dict1['twowater'] print(dict1) # 删除字典中的所有元素 dict1.clear() print(dict1) # 删除字典 del dict1
輸出的結果:
{'liangdianshui': '111111', 'twowater': '222222', '两点水': '333333'} {'liangdianshui': '111111', '两点水': '333333'} {}
#5、 dict (字典)使用時注意的事項
(1) dict (字典)是不允許一個鍵創建兩次的,但是在創建dict (字典)的時候如果出現了一個鍵值賦予了兩次,會以最後一次賦予的值為準
例如:
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333','twowater':'444444'} print(dict1) print(dict1['twowater'])
輸出的結果:
{'liangdianshui': '111111', 'twowater': '444444', '两点水': '333333'} 444444
( 2) dict (字典)鍵必須不可變,可是鍵可以用數字,字串或元組充當,但是就是不能使用列表
例如:
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,123:'222222' ,(123,'tom'):'333333','twowater':'444444'} print(dict1)
輸出結果:
{'liangdianshui': '111111', 123: '222222', (123, 'tom'): '333333', 'twowater': '444444'}
(3) dict 內部存放的順序和key 放入的順序是沒有任何關係
和list 比較,dict 有以下幾個特點:
查找和插入的速度極快,不會隨著key的增加而變慢
需要佔用大量的內存,內存浪費多
#而list相反:
查找和插入的時間隨著元素的增加而增加
佔用空間小,浪費記憶體很少
6、dict (字典) 的函數和方法
方法與函數 | 描述 |
#cmp(dict1, dict2) | 比較兩個字典元素 |
len(dict) | #計算字典元素個數 |
輸出字典可列印的字串表示 | |
# 回傳輸入的變數類型,如果變數是字典就回傳字典類型 | |
刪除字典內所有元素 | |
傳回一個字典的淺複製 | |
以列表傳回字典中的所有值 | |
#隨機傳回並刪除字典中的一對鍵和值 | |
以列表傳回可遍歷的(鍵, 值) 元群組數組 |
#