Python中的dict字典
阿新 • • 發佈:2021-07-14
字典dict
介紹
- key-value鍵值對的資料集合
- 是可變的、無序的、key具有唯一性
字典建立
- d = dict()
- d = {}
- Dict(**kwargs) 使用name=value初始化一個字典
字典訪問
- d[key]
- 返回key對應的value
- key不存在丟擲keyError異常
- get(key[, default])
- 返回key對應的value
- key不存在返回預設值,如果沒有default返回None
- get方法不會拋異常
- setdefault(key[, default])
- 返回key對應的value
- key不存在,則新增kv對,value為default值
字典增加和修改
- d[key] = value
- 將key對應的值修改為value
- key不存在新增新的鍵值對
- update([other]) —> None
- 使用另一個字典的鍵值對更新本字典
- key不存在,就新增
- key存在,覆蓋已存在的key對應的value
- 原處修改
字典刪除
- pop(key[, default])
- key存在,移除,並返回它的value
- key不存在,返回給定的default
- default未設定,key不存在則丟擲keyError
- popitem()
- 移除並返回一個任意的鍵值對
- 字典為空,丟擲keyError
- clear()
- 清空字典
字典刪除
- del語句
- del d['c']
- del本質上刪除的是一個物件的引用
字典遍歷
-
for … in dict
-
遍歷key
for k in d1: print(k) for k in d.keys(): print(k)
-
遍歷value
for v in d.values(): print(v) for v in d: print(d.get(v))
-
遍歷鍵值對
-
for item in d.items(): print(item) # 返回值為元組 for k,v in d.items() # k,v 可使用結構方式 print(k,v) # 返回k或者v
-
總結
- python3中,keys/values/items方法返回一個可迭代物件,不會將結果儲存在記憶體中
- python2中,上面的方法會返回一個新的列表,佔據新的記憶體,所以python2中建議使用iterkeys、itervalues,會返回一個迭代器
-
字典的key
- key的要求必須為可hash
預設字典defaultdict
-
Collections.defaultdict([default_factory[,...]])
- 第一個引數是default_factory,預設是None,它提供了一個初始化函式,當key不存在,這個工廠函式來生成key對應的value
from collections import defaultdict d1 = {} d2 = defaultdict(list) # 建立預設字典,如果key不存在,則生成k對應的空列表 for k in "abcde": for v in range(5): if k not in d1.keys(): d1[k] = [] d1[k].append(v) print(d1) for k in "mnopq": for v in range(3): d2[k].append(v) # 相當於呼叫預設字典的工廠函式判斷k是否存在,如果不存在則建立鍵值對,並新增v print(d2)
順序字典orderedDict
-
collections.OrderedDict([items])
- 有序字典可以記錄元素插入的順序,列印的時候也是按照這個順序輸出。
- key並不是按照加入的順序排列,可使用OrderedDict來順序排列
# 普通字典 >>> d = {} >>> d['apple'] = 3 >>> d['orange'] = 4 >>> d['pear'] = 1 >>> d['banabna'] = 2 >>> d {'orange': 4, 'pear': 1, 'apple': 3, 'banabna': 2} # 有序字典 >>> from collections import OrderedDict >>> od = OrderedDict() >>> od['apple'] = 3 >>> od['orange'] = 4 >>> od['pear'] = 1 >>> od['banabna'] = 2 >>> od OrderedDict([('apple', 3), ('orange', 4), ('pear', 1), ('banabna', 2)])