一. 初識字典
字典一種可變的容器,可以存儲任意類型的數據,數據以鍵(key)-值(value)對的形式進行映射存儲。字典中的每個數據都是用“鍵”(key)進行索引的,而不像序列可以用下標進行索引,因此鍵不能重複,且只能用不可變類型作爲字典的鍵。數據沒有先後順序關係,字典的存儲是無序的。
1.1 表示方式
{} 括起來,以冒號(:)分隔鍵-值對,各個鍵-值用逗號分隔開
1.2 創建字典
- 創建空字典:d = {}
- 創建非空字典:d = {"name":"Alex","age":12}、d = {1:"星期一",2:"星期二"}
- 字典的構造函數:
dict() | 創建空字典,等同於{} |
dict(iterable) | 用可迭代對象初始化一個字典。如:d = dict([('name', 'Alex'), ('age', 13)]),每個元組裏面提供2個值,一個爲鍵,一個爲值。 |
dict(**kwargs) | 關鍵字傳參形式生成一個字典。如:d = dict(name='Alex',age=15),此方法中,鍵必須只能是字符串 |
1.3 添加/修改字典的元素
使用“字典[鍵] = 值”的形式向字典中添加/修改元素;當鍵不存在時,創建鍵並綁定鍵對應的值,當鍵存在時,修改鍵綁定的對象。
1.4 刪除字典的元素
del語句用來刪除字典的元素:del dict[key]
1.5 in/not in運算符
判斷一個“鍵”是否存在與字典中,如果存在則返回True,否則返回False
1.6 字典的迭代訪問
字典是可迭代對象,直接遍歷字典時得到的是字典的鍵。可以使用索引間接訪問值(遍歷時切勿去同時修改字典的值,後續篇幅會詳細說明)。
二. 字典常用函數及方法
關於字典相關函數的使用總結如下
函數 | 說明 |
len(x) | 返回鍵值對的個數 |
max(x) | 返回‘’鍵‘’的最大值 |
min(x) | 返回‘’鍵‘’的最小值 |
sum(x) | 返回‘’鍵‘’的和 |
any(x) | 真值測試,如果字典中一個‘’鍵‘’爲真,則結果爲真 |
all(x) | 真值測試,字典中所有‘’鍵‘’爲真,則結果才爲真 |
關於字典相關方法的使用總結如下
方法 | 說明 |
D.clear() | 清空字典 |
D.copy() | 返回字典D的副本,只複製一層(淺拷貝) |
D.get(k[,d]) | 返回鍵key對應的值,如果沒有此鍵,則返回default |
D.items() |
返回鍵值對組成的可迭代對象; 如:d = {1:"one", 2:"two","three":3},d.items()返回值爲dict_items([(1, 'one'), (2, 'two'), ('three', 3)]) |
D.keys() |
返回字典的鍵; d = {1:"one", 2:"two","three":3},d.keys()返回值爲dict_keys([1, 2, 'three']) |
D.values() |
返回字典的值; d = {1:"one", 2:"two","three":3},d.values()返回值爲dict_values(['one', 'two', 3]) |
D.pop(k[d]) | 移除鍵,同時返回此鍵對應的值; |
D.update(D2) | 更新字典;如果key值重複,則更新爲D2中的值 |
三. 字典和列表的比較
- 都是可變對象;
- 索引方式不同,列表用整數索引,字典用鍵索引;
- 列表的存儲是有序的,字典的存儲是無序的:
- 列表:順序存儲,append()很快,但insert()很慢;
- 字典:映射存儲,插入的速度很快。