Python 映射數據類型(字典數據類型 dict )詳解 [學習 Python 必備基礎知識][看此一篇就夠了][對 Python 字典的操作][對字典鍵值對的操作][Python 字典常用方法]

您的“關注”和“點贊”,是信任,是認可,是支持,是動力…

如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。

在這裏插入圖片描述

1 Python 映射數據類型概述

mapping 對象會將 hashable 值映射到任意對象。 映射屬於可變對象。

目前僅有一種標準映射類型字典

Python 字典(dict)是一種無序的、可變的序列,元素以“鍵值對(key-value)”的形式存儲。

字典的鍵“幾乎”可以是任何值。
hashable 的值,即包含列表、字典或其他可變類型的值(此類對象基於值而非對象標識進行比較)不可用作鍵。
數字類型用作鍵時遵循數字比較的一般規則:如果兩個數值相等 (例如 11.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 判斷鍵值對是否存在

判斷字典中是否存在指定鍵值對:

  • 首先,判斷字典中是否有對應的鍵;
  • 然後,如果鍵存在,再通過訪問字典的方法可以輕易的獲取對應的值。

判斷字典是否包含指定鍵值對的鍵,可以使用 innot 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 字典常用方法詳解》

【文章其它地址】

微信公衆號:碼農阿杰

博客園

【參考資料】

Python 官網

Python 3.8.2 documentation

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章