1. 程式人生 > 實用技巧 >第25講:字典:當索引不好用時

第25講:字典:當索引不好用時

一 字典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()
  • 字典排序:通過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