您的“關注”和“點贊”,是信任,是認可,是支持,是動力…
如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。
文章目錄
1 Python 映射數據類型概述
mapping
對象會將 hashable
值映射到任意對象。 映射屬於可變對象。
目前僅有一種標準映射類型字典
。
Python 字典(dict)是一種無序的、可變的序列,元素以“鍵值對(key-value)”的形式存儲。
字典的鍵“幾乎”可以是任何值。
非 hashable
的值,即包含列表、字典或其他可變類型的值(此類對象基於值而非對象標識進行比較)不可用作鍵。
數字類型用作鍵時遵循數字比較的一般規則:如果兩個數值相等 (例如 1
和 1.0
) 則兩者可以被用來索引同一字典條目。 (注意:由於計算機對於浮點數存儲的只是近似值,因此將其用作字典鍵是不明智的。)
字典中的鍵必須唯一,不支持同一個鍵出現多次,否則只會保留最後一個鍵值對。
2 Python 創建字典
2.1 使用 { } 創建字典
使用``{ }` 創建字典的語法格式如下所示:
dictname = {'key1': 'value1', 'key2': 'value2', ..., 'keyn': 'valuen'}
對以上格式說明,
dictname
: 表示字典變量名。keyn: valuen
: 表示各個元素的鍵值對。注意:同一字典中的各個鍵必須唯一,不能重複,否則只會保留最後一個鍵值對。- 字典中每個元素都包含兩部分,分別是鍵(key)和值(value),因此在創建字典時,鍵和值之間使用冒號
:
分隔,相鄰元素之間使用逗號,
分隔,所有元素放在大括號{ }
中。
舉例如下所示:
# 壓索的四個技能
dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
print(dict_demo)
運行結果:
{'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
2.2 通過 fromkeys() 方法創建字典
dict 對象提供 fromkeys(list,value=None)
方法創建帶有默認值的字典。
通常用於初始化字典(設置 value
的默認值)。
使用格式如下所示:
dictname = dict.fromkeys(list,value=None)
對以上格式說明,
dictname
:fromkeys() 方法的返回值(創建好的字典)會賦值給變量 dictname。list
:list 參數表示要創建的字典中所有鍵組成的列表。value
:value 參數表示要創建的字典的元素的值的默認值,所有元素的值都爲這個默認值;如果不寫,則爲空值None
。
舉例如下所示:
例一,
list1 = ['Q', 'W', 'E', 'R']
dict_demo = dict.fromkeys(list1) # 不寫 value 參數,則爲空值 `None`
print(dict_demo)
運行結果:
{'Q': None, 'W': None, 'E': None, 'R': None}
例二,
list1 = ['Q', 'W', 'E', 'R']
dict_demo = dict.fromkeys(list1, '斬鋼閃') # value 參數表示要創建的字典的元素的值的默認值,所有元素的值都爲這個默認值
print(dict_demo)
運行結果:
{'Q': '斬鋼閃', 'W': '斬鋼閃', 'E': '斬鋼閃', 'R': '斬鋼閃'}
2.3 通過 dict() 映射函數創建字典
舉例如下所示:
# 字符串類型的 鍵 不能帶引號,否則會報錯
dict1 = dict(Q='斬鋼閃', W='風之壁障', E='踏前斬', R="狂風絕息斬")
print('dict1 =', dict1)
# 向 dict() 函數傳入列表或元組,而它們中的元素又各自是包含 2 個元素的列表或元組,其中第一個元素作爲鍵,第二個元素作爲值。
dict2 = dict([('Q', '斬鋼閃'), ('W', '風之壁障'), ('E', '踏前斬'), ('R', '狂風絕息斬')])
print('dict2 =', dict2)
# 通過應用 dict() 函數和 zip() 函數,可將前兩個列表轉換爲對應的字典。
keys = ['Q', 'W', 'E', 'R']
values = ['斬鋼閃', '風之壁障', '踏前斬', '狂風絕息斬']
dict3 = dict(zip(keys, values))
print('dict3 =', dict3)
運行結果:
dict1 = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
dict2 = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
dict3 = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
2.4 創建空的字典
舉例如下所示:
dict_demo1 = {} # 直接使用 {} 創建空字典
dict_demo2 = dict() # 使用 dict() 內置函數創建空字典
print(type(dict_demo1))
print('dict_demo1 =', dict_demo1)
print(type(dict_demo2))
print('dict_demo2 =', dict_demo2)
運行結果:
<class 'dict'>
dict_demo1 = {}
<class 'dict'>
dict_demo2 = {}
3 Python 訪問字典
3.1 通過鍵(key)來訪問對應的值。
使用格式如下所示:
dictname[key]
對以上格式說明,
dictname
:表示被訪問字典的變量名。key
:表示鍵名。注意:鍵必須是存在的,否則會拋出異常。
舉例如下所示:
例一,
dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
print(dict_demo['R'])
運行結果:
狂風絕息斬
例二,
dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
print(dict_demo['B']) # 字典中不存在 'B' 鍵
運行結果:
Traceback (most recent call last):
File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 11, in <module>
print(dict_demo['B']) # 字典中不存在 'B' 鍵
KeyError: 'B'
3.2 通過 dict 對象提供的 get() 方法訪問指定鍵對應的值
Python 更推薦使用 dict 對象
提供的 get()
方法來獲取指定鍵對應的值。
使用格式如下所示:
dictname.get(key[,default])
對以上格式說明,
dictname
:被訪問字典的變量名。key
:表示指定的鍵。當指定的鍵不存在時,get()
方法不會拋出異常。default
:用於指定要查詢的鍵不存在時,返回的默認值;如果不手動指定,會返回None
。
舉例如下所示:
dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
print(dict_demo.get('R'))
print(dict_demo.get('B', '該鍵不存在'))
運行結果:
狂風絕息斬
該鍵不存在
4 Python 刪除字典
Python 自帶垃圾回收功能,會自動銷燬不用的字典,一般不需要通過 del
關鍵字來手動刪除。
手動刪除字典使用 del
關鍵字。
舉例如下所示:
dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
print('刪除前 dict_demo =', dict_demo)
del dict_demo # 刪除字典操作
print('刪除後 dict_demo =', dict_demo)
運行結果:
刪除前 dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
Traceback (most recent call last):
File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 15, in <module>
print('刪除後 dict_demo =', dict_demo)
NameError: name 'dict_demo' is not defined
5 對 Python 字典鍵值對的基本操作
5.1 向 Python 字典添加鍵值對
向 Python 字典添加鍵值對,直接給不存在的 key
賦值即可。
使用語法格式如下所示:
dictname[key] = value
對以上格式說明:
dictname
: 表示字典名稱。key
: 表示新的鍵。value
: 表示新的值,只要是 Python 支持的數據類型都可以。
舉例如下所示:
dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
print('添加前 dict_demo =', dict_demo)
dict_demo['B'] = '回城' # 爲字典添加鍵值對操作
print('添加後 dict_demo =', dict_demo)
運行結果:
添加前 dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
添加後 dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬', 'B': '回城'}
5.2 從 Python 字典刪除鍵值對
刪除字典中的鍵值對,使用 del
語句。
舉例如下所示:
dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
print('添加前 dict_demo =', dict_demo)
del dict_demo['R'] # 刪除字典鍵值對操作
print('添加後 dict_demo =', dict_demo)
運行結果:
添加前 dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
添加後 dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬'}
5.3 爲 Python 字典修改鍵值對
Python 字典中鍵(key)的名字不能被修改,我們只能修改值(value)。
字典中各元素的鍵必須是唯一的,因此,如果新添加元素的鍵與已存在元素的鍵相同,那麼鍵所對應的值就會被新的值替換掉,以此達到修改元素值的目的。
舉例如下所示:
dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
print('修改前 dict_demo =', dict_demo)
dict_demo['R'] = '壓索大招' # 修改字典值
print('修改後 dict_demo =', dict_demo)
運行結果:
修改前 dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
修改後 dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '壓索大招'}
5.4 判斷鍵值對是否存在
判斷字典中是否存在指定鍵值對:
- 首先,判斷字典中是否有對應的鍵;
- 然後,如果鍵存在,再通過訪問字典的方法可以輕易的獲取對應的值。
判斷字典是否包含指定鍵值對的鍵,可以使用 in
或 not in
運算符(都是基於 key 來判斷的)。
舉例如下所示:
dict_demo = {'Q': '斬鋼閃', 'W': '風之壁障', 'E': '踏前斬', 'R': '狂風絕息斬'}
print('R' in dict_demo) # 判斷字典中是否存在鍵 'R'
print('R' not in dict_demo) # 判斷字典中是否不存在鍵 'R'
運行結果:
True
False
6 Python 字典常用方法詳解
請參見博文 《Python 字典常用方法詳解》。