Python第五章-內置數據結構04-字典

Python 內置的數據結構

四、字典(dict)

字典也是 python 提供給我們的又一個非常重要且有用的數據結構。

字典在別的語言中有時叫關聯數組、關聯記憶體、Map等。

字典中存儲的是一系列的key-value,這些key-value稱之為鍵值對。

字典與前面學習的序列不同,序列通過index來索引數據,而字典則是通過key來索引value

最好把字典認為是一系列無序鍵值對的集合。

序列(list):使用[]定義

元組(tuple):使用()定義

字典(dict):使用{}定義

鍵(key)是索引

值(value)是數據

鍵和值之間使用:分隔

鍵必須是唯一的

值可以是任意數據類型。但鍵只能使用字元串,數字或元組

5.1 字典的創建

4.1.1通過字面量形式創建

把這些鍵值對用comma(逗號)隔開,再把這些鍵值對封裝在一對brace(大括弧)中。 鍵與值之間用冒號隔開。

tels = {      "ls": 1604,      "zs": 1000,      "ww": 2000  }    print(tels)  


如果在 {} 中不添加任何的鍵值對,則創建了一個空的字典。如果把它當布爾值來用的話,就是表示 False

d = {}  print(d)    # {}  

4.1.2 使用dict() 構造器創建

使用 dict() 構造器傳入鍵值對序列創建出字典

d = dict([['space',4139],('guido',4127),('jack',4098)])  print(d)  #c = dict([('space',100),('guido',200),('jack',300)])  #print(c)  

使用關鍵字參數創建

如果字典的key是簡單的字元串的時候,通過關鍵字參數也可以方便的創建字典

d = dict(sape=4139, guido=4127, jack=4098)  print(d)  


4.1.3 通過字典推導創建字典(類似列表推導)

# key是3-9的數字,value 是他的3次方  d = {x: x ** 3 for x in range(3, 10)}  print(d)  

4.2 字典中鍵和值

並不是所有的類型的數據都可以做dictkeykey必須是不可變(immutable)類型。

value沒有類型限制。

key不允許重複。

數字和字元串經常用做keytuple中如果存儲的是數字、字元串或tuple 也可以做為key.

list是可變的,不能作為key, 如果tuple直接或者間接的包含了可變類型,也不能做為key

d = {      [10]: "abc"    # list 不能作為 key  }  


d = {      (10, 20): "hello"    # tuple 可以作為 key  }  


d = {      ([10], [20]): "hello" # tuple 存儲有可變類型,也不能做 key  }  

4.3 字典的常用操作

字典的主要操作就是儲存鍵值對、根據指定的key獲取對應的value、刪除鍵值對。

4.3.1 向字典中添加鍵值對

使用 字典名[鍵] = 值的方式去添加

d = {"a": 97}    d["b"] = 98 #向 dict中添加新的鍵值對  "b"就是鍵, 98就是值  d["c"] = 99  print(d)  

如果添加的時候key已經存在了,則會用的新的值覆蓋舊的值。

d = {"a": 97}  d["a"] = 970  print(d)  


4.3.2 判斷key是否在dict中存在

使用innot in來判斷。

d = {"ac": 98, "ab": 99, "c": 97}    print("ac" in d)  print("d" not in d)  


4.3.3 根據key獲取value

直接使用字典名[鍵]的方式獲取

d = {"a": 97}  print(d["a"])    # 97  

如果訪問不存在的key則會拋出異常。

d = {"ac": 98, "ab": 99, "c": 97}  print(d["aa"])  

如果避免拋出異常,一般有 2 種方式:

  1. 先用 in 判斷
d = {"ac": 98, "ab": 99, "c": 97}  if "aa" in d:      print(d["aa"])  
  1. 使用字典的實例方法get(key)來訪問
d = {"ac": 98, "ab": 99, "c": 97}  print(d.get("aa"))  print(d.get("aa", "隨機給你的"))  print(d.get("ac", "隨機給你的"))  

4.3.4 刪除key-value

使用關鍵字del可以刪除指定keykey-value對。

d = {"a": 97, "b": 98, "c": 99}  del d["a"]    print(d)  

4.3.5 獲取所有的key

通過list(dict.keys())可以獲取在字典中所有的key組成的list,這些 key 的順序是隨機的。

d = {"a": 98, "b": 99, "c": 97}    list1 = list(d.keys())  print(list1)  

如果想獲取排好序的key可以會用sorted(dict.keys())

d = {"ac": 98, "ab": 99, "c": 97}    list1 = sorted(d.keys())  print(list1)  


4.3.6 獲取所有的 value

通過list(dict.values())可以獲取在字典中所有的 value 組成的list,這些 value 的順序是隨機的。

d = {"a": 98, "b": 99, "c": 97}    list1 = list(d.values())  print(list1)  


如果想獲取排好序的key可以會用sorted(dict.keys())

d = {"ac": 98, "ab": 99, "c": 97}    list1 = sorted(d.keys())  print(list1)