第25講:字典:當索引不好用時
阿新 • • 發佈:2020-07-21
一 字典https://www.cnblogs.com/linupython/p/5880280.html
1 概念/特點
- 字典是另一種可變容器模型,且可儲存任意型別物件。
- 字典是python中唯一的對映型別,採用鍵值對(key-value)的形式儲存資料。python對key進行雜湊函式運算,根據計算的結果決定value的儲存地址,所以字典是無序儲存的,且key必須是可雜湊的,可雜湊表示鍵值不可變。
總結:
- 字典值可以沒有限制地取任何python物件,既可以是標準的物件,也可以是使用者定義的,但鍵不行。
- 不允許同一個鍵出現兩次。建立時如果同一個鍵被賦值兩次,後一個值會被記住
- 鍵必須不可變,所以可以用數字,字串或元組充當,所以用列表就不行
2 定義:字典可通過一對花括號來定義,元素內部通過冒號來連線key和對應的value,元素與元素之間通過逗號隔開,可進行自由巢狀。
3 語法格式:d = {key1 : value1, key2 : value2 }
4 字典的相關操作
- 建立
- 通過定義字典的過程建立 。dict = {'a':1,'b':2,'c':3}
- dict()函式:也可以建立字典
- 注意:在使用dict函式之前先把原來定義的dict字典給刪了,用'del dict'命令,否則系統會報錯:TypeError: 'dict' object is not callable
- 通過元組定義:dict1 = dict((('F',70),('i',105),('s',115),('h',104),('C',67)))
- 訪問:通過在方括號內引用其鍵名來訪問字典的元素。print(dict['c'])
- 修改:
- 更改已有鍵值對的值:通過引用其鍵名來更改特定項的值。dict['a'] = 0
- 增加新的鍵值對:通過引用要新增的'key'並給該'key'賦值來新增新的鍵值對:dict['d']=4
- 刪除:字典長度:獲取字典的長度(鍵值對的個數),通過len方法實現。len(dict)
- del語句:
- 刪除整個字典。del dict
- 刪除字典中的某個鍵值對。del dict['a']
- clear()方法:清空字典所有鍵值對,不需要引數。dict.clear()
- pop()方法:刪除字典的某一鍵值對,其引數直接是鍵值key,不需要通過字典名稱引用。dict.pop('c')
- popitem()方法:刪除最後插入的專案(在 3.7 之前的版本中,刪除隨機專案)。dict.popitem()
- del語句:
- 字典排序:通過sorted方法對所有的key進行排序並以列表形式返回。sorted(dict)
- 字典型別:可用type函式檢視字典中某一鍵值對的值的型別。type(dict['a'])
- 檢查鍵值是否存在:要確定字典中是否存在指定的鍵,可使用in關鍵字。
-
1 >>> if 'a' in dict: 2 ... print("True")
-
- 遍歷字典:可以使用for迴圈遍歷字典,迴圈遍歷字典時,返回值是字典的鍵,但也有返回值的方法。
- 逐個列印字典中的所有鍵名:
-
1 >>> for x in dict: 2 ... print(x)
-
- 逐個列印字典中的所有值:
-
1 >>> for x in dict: 2 ... print(dict[x])
-
- 還可以使用values()函式返回字典的值
-
1 >>> for x in dict.values(): 2 ... print(x)
-
- 通過使用 items() 函式遍歷鍵和值
-
>>> for x,y in dict.items(): ... print(x,y)
-
- 逐個列印字典中的所有鍵名:
5 字典的常用內建方法
二 課後習題
測試題部分
0. 當你聽到小夥伴們在談論“對映”、“雜湊”、“雜湊”或者“關係陣列”的時候,事實上他們就是在討論什麼呢?
答:是的,事實上他們就是在討論我們這一講介紹的“字典”,都是一個概念!
1. 嘗試一下將資料('F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115)建立為一個字典並訪問鍵 'C' 對應的值?
1 >>> MyDict = dict((('F', 70), ('i',105), ('s',115), ('h',104), ('C',67))) 2 >>> MyDict_2 = {'F':70, 'i':105, 's':115, 'h':104, 'C':67} 3 >>> type(MyDict) 4 <class 'dict'> 5 >>> type(MyDict_2) 6 <class 'dict'> 7 >>> MyDict['C'] 8 67