Python第五章-內置數據結構04-字典
- 2020 年 4 月 1 日
- 筆記
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 字典中鍵和值
並不是所有的類型的數據都可以做dict
的key
,key
必須是不可變(immutable)
類型。
value
沒有類型限制。
key
不允許重複。
數字和字元串經常用做key
,tuple
中如果存儲的是數字、字元串或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
中存在
使用in
或not 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 種方式:
- 先用
in
判斷
d = {"ac": 98, "ab": 99, "c": 97} if "aa" in d: print(d["aa"])
- 使用字典的實例方法
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
可以刪除指定key
的key-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)