1. 字典dict的定義python
字典在Python中是一種可變的容器模型,是經過一組鍵值對(key-value)組成的。數組
這種結構類型一般也被稱爲映射,或關聯數組,或哈系表。函數
字典中的每一個鍵值對用 「 :」分割,每一個鍵值對之間用 逗號 「 ,」分割,整個字典包括在花括號「{ }」中.spa
格式:d = {key1:value1, key2:value2, key3:value3}code
2. Python內置了字典,在其餘語言中也稱爲map,使用鍵-值(key-value)存儲,具備極快的查找速度。blog
用python寫一個dict以下:索引
>>> d = {'Bob': 95, 'Mary': 97} >>> d['Mary'] 97
咱們能夠發現,若是用dict實現,只須要一個名字和成績的對照表,就能夠直接根據名字查找成績,不管這個表有多大,查找速度都不會變慢。內存
3. 爲何dict的查找速度這麼快?字符串
(1)由於dict的實現原理和查字典是同樣的,以字典舉例來講,咱們在查某個字的時候,會先在字典的索引表裏查到這個字對應的頁碼,而後直接翻到這頁找到這個字。get
使用這樣的方法,不管找哪一個字,查找速度都會特別快,不會隨着字典大小的增長而變慢。
(2)dict就是使用這樣的方法來實現的,好比給定一個名字'Bob',dict就能夠在內部直接算出'Bob'對應成績的'頁碼',也就是存放成績的內存地址,直接取出來,因此速度特別快。
這種key-value的存儲方式,在放進去的時候,必須根據key算出value的存放位置,這樣取的時候才能根據key直接取出value。
4. 鍵的不可變性
鍵必須不可變,因此可使用數字、字符串或者元組,可是就不能夠用列表。
值能夠取任意的數據類型。
以下實例所示:
>>> d = {['Name']: 'Zara', 'Age': 7} 結果以下: Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'
5. 鍵的惟一性
鍵通常是惟一的,同一個鍵不容許出現兩次。而若是重複最後的一個鍵值則會替換掉前面的,值不須要惟一。
因爲1個key只能對應1個value,因此屢次對1個key放入value,後面的值會把前面的值沖掉。
惟一性舉例以下所示:
>>> dict = {'a': 1, 'b': 2, 'b': '3'} >>> dict['b'] '3' >>> dict {'a': 1, 'b': '3'}
>>> dict = {'a': 1, 'b': 2} >>> dict['b'] '2' >>> dict['b'] = 3
>>> dict
{'a': 1, 'b': '3'}
6. 數據放入dict的方法
1. 初始化指定
d = {'Bob': 95, 'Mary': 97}
2. 經過key放入
d['Adam'] = 67
3. dict內部存放的順序和key放入的順序是沒有關係的
7. 修改dict的方法
#!/usr/bin/python d = {'Name': 'Marsa', 'Age': 6, 'Class': 'First'} d['Age'] = 18 # 更新 d['School'] = "USTB" # 添加 print("d['Age']: ", d['Age']) print("d['School']: ", d['School'])
輸出結果:
d['Age']: 18
d['School']: USTB
8. key不存在,dict會報錯
>>> d = {'Name': 'Marsa', 'Age': 6, 'Class': 'First'}
>>> d['Thomas']
Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Thomas'
避免key不存在這種錯誤的兩種辦法:
1. 經過in判斷key是否存在 >>> 'Thomas' in d False 2. 經過dict提供的get()方法 若是key不存在,能夠返回None或者本身指定的value。注意: 返回None的時候Python的交互環境不顯示結果。 >>> d.get('Thomas') >>> d.get('Thomas', -1) -1
9. 在dict中刪除一個key
刪除字典中的元素,能夠刪除單一的元素,也能清空字典。 顯示刪除一個字典用del命令。 eg: d = {'Bob': 95, 'Mary': 97} >>> del d['Bob'] # 刪除鍵是'Bob'的條目,刪除一個key,對應的value也會從dict中刪除
>>> d.clear() # 清空字典中的全部條目
>>> del d # 刪除字典
也可使用pop(key)方法,刪除一個key,對應的value也會從dict中刪除
使用pop方法刪除字典給定鍵key所對應的值,返回值爲被刪除的值 eg: d = {'Bob': 95, 'Mary': 97} >>> d.pop('Bob') 95
>>> d
{'Mary': 97}
10. dict和list的比較
dict的特色:
(1)查找和插入的速度極快,不會隨着key的增長而變慢
(2)dict是用空間來換取時間的一種方法,須要佔用大量的內存,內存浪費多
list的特色:
(1)查找和插入的速度隨着元素的增多而變慢
(2)佔用的空間比較小,內存浪費少
11. Python字典內置函數及方法