Python dict字典


4.13 Python dict字典

Python 字典(dict)是一種無序的、可變的序列,它的元素以 鍵值對(key-value) 的形式存儲。
相對地,列表(list)和元組(tuple)都是有序的序列,它們的元素在底層是挨著存放的。

字典類型是 Python 中唯一的映射類型?!坝成洹笔菙?shù)學(xué)中的術(shù)語,簡單理解,它指的是元素之間相互對應(yīng)的關(guān)系,即通過一個元素,可以唯一找到另一個元素。

字典的每個鍵值對key:value用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號({})中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }  

鍵必須是唯一不變的,但值則不必。

值可以取任何數(shù)據(jù)類型,如字符串,數(shù)字或元組。

一個簡單的字典實例:

dict = {'Linux': 'OS', 'Windows': 'OS', 'MACOS': 'OS'}
Python字典特征

Python 創(chuàng)建字典

  • 使用 { } 創(chuàng)建字典

由于字典中每個元素都包含兩部分,分別是鍵(key)和值(value),因此在創(chuàng)建字典時,鍵和值之間使用冒號:分隔,相鄰元素之間使用逗號,分隔,所有元素放在大括號{ }中。

使用{ }創(chuàng)建字典的語法格式如下:

dictname = {'key':'value1', 'key2':'value2', ..., 'keyn':valuen}

其中 dictname 表示字典變量名,key : valuen 表示各個元素的鍵值對。需要注意的是,同一字典中的各個鍵必須唯一,不能重復(fù)。

如下代碼示范了使用花括號語法創(chuàng)建字典:

#使用字符串作為key
scores = {'數(shù)學(xué)': 95, '英語': 92, '語文': 84}
print(scores)
#使用元組和數(shù)字作為key
dict1 = {(20, 30): 'great', 30: [1,2,3]}
print(dict1)
#創(chuàng)建空元組
dict2 = {}
print(dict2)  

運行結(jié)果為:

{'數(shù)學(xué)': 95, '英語': 92, '語文': 84}
{(20, 30): 'great', 30: [1, 2, 3]}
{}

可以看到,字典的鍵可以是整數(shù)、字符串或者元組,只要符合唯一和不可變的特性就行;字典的值可以是 Python 支持的任意數(shù)據(jù)類型。

  • 通過 fromkeys() 方法創(chuàng)建字典

Python 中,還可以使用 dict 字典類型提供的 fromkeys() 方法創(chuàng)建帶有默認值的字典,具體格式為:

dictname = dict.fromkeys(list,value=None)

其中,list 參數(shù)表示字典中所有鍵的列表(list);value 參數(shù)表示默認值,如果不寫,則為空值 None。

請看下面的例子:

knowledge = {'語文', '數(shù)學(xué)', '英語'}
scores = dict.fromkeys(knowledge, 60)
print(scores)  

運行結(jié)果為:

{'語文': 60, '英語': 60, '數(shù)學(xué)': 60}

可以看到,knowledge 列表中的元素全部作為了 scores 字典的鍵,而各個鍵對應(yīng)的值都是 60。這種創(chuàng)建方式通常用于初始化字典,設(shè)置 value 的默認值。

  • 通過 dict() 映射函數(shù)創(chuàng)建字典

通過 dict() 函數(shù)創(chuàng)建字典的寫法有多種,表 2 羅列出了常用的幾種方式,它們創(chuàng)建的都是同一個字典 a。

dict函數(shù)創(chuàng)建字典

注意,無論采用以上哪種方式創(chuàng)建字典,字典中各元素的鍵都只能是字符串、元組或數(shù)字,不能是列表。列表是可變的,不能作為鍵。

如果不為 dict() 函數(shù)傳入任何參數(shù),則代表創(chuàng)建一個空的字典,例如:

# 創(chuàng)建空的字典
d = dict()
print(d)  

運行結(jié)果為:{}

常用字典內(nèi)置方法

4.14 Python dict字典基本操作

由于字典屬于可變序列,所以我們可以任意操作字典中的鍵值對(key-value)。Python 中,常見的字典操作有以下幾種:

  • 向現(xiàn)有字典中添加新的鍵值對。
  • 修改現(xiàn)有字典中的鍵值對。
  • 從現(xiàn)有字典中刪除指定的鍵值對。
  • 判斷現(xiàn)有字典中是否存在指定的鍵值對。

初學(xué)者要牢記,字典是由一個一個的 key-value 構(gòu)成的,key 是找到數(shù)據(jù)的關(guān)鍵,Python 對字典的操作都是通過 key 來完成的。

Python字典添加鍵值對
為字典添加新的鍵值對很簡單,直接給不存在的 key 賦值即可,具體語法格式如下:dictname[key] = value

對各個部分的說明:

  • dictname 表示字典名稱。
  • key 表示新的鍵。
  • value 表示新的值,只要是 Python 支持的數(shù)據(jù)類型都可以。

下面代碼演示了在現(xiàn)有字典基礎(chǔ)上添加新元素的過程:

a = {'數(shù)學(xué)':95}
print(a)
#添加新鍵值對
a['語文'] = 89
print(a)
#再次添加新鍵值對
a['英語'] = 90
print(a)
運行結(jié)果:
{'數(shù)學(xué)': 95}
{'數(shù)學(xué)': 95, '語文': 89}
{'數(shù)學(xué)': 95, '語文': 89, '英語': 90}

Python字典修改鍵值對

Python 字典中鍵(key)的名字不能被修改,我們只能修改值(value)。

字典中各元素的鍵必須是唯一的,因此,如果新添加元素的鍵與已存在元素的鍵相同,那么鍵所對應(yīng)的值就會被新的值替換掉,以此達到修改元素值的目的。請看下面的代碼:

a = {'數(shù)學(xué)': 95, '語文': 89, '英語': 90}
print(a)
a['語文'] = 100
print(a)
運行結(jié)果:
{'數(shù)學(xué)': 95, '語文': 89, '英語': 90}
{'數(shù)學(xué)': 95, '語文': 100, '英語': 90}

可以看到,字典中沒有再添加一個{'語文':100}鍵值對,而是對原有鍵值對{'語文': 89}中的 value 做了修改。

Python字典刪除鍵值對

如果要刪除字典中的鍵值對,還是可以使用 del 語句。例如:

# 使用del語句刪除鍵值對
a = {'數(shù)學(xué)': 95, '語文': 89, '英語': 90}
del a['語文']
del a['數(shù)學(xué)']
print(a)
運行結(jié)果為:
{'英語': 90}

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

如果要判斷字典中是否存在指定鍵值對,首先應(yīng)判斷字典中是否有對應(yīng)的鍵。判斷字典是否包含指定鍵值對的鍵,可以使用 innot in 運算符。
需要指出的是,對于 dict 而言,in 或not in運算符都是基于key` 來判斷的。

例如如下代碼:

a = {'數(shù)學(xué)': 95, '語文': 89, '英語': 90}
# 判斷 a 中是否包含名為'數(shù)學(xué)'的key
print('數(shù)學(xué)' in a) # True
# 判斷 a 是否包含名為'物理'的key
print('物理' in a) # False  

運行結(jié)果為:

True
False

通過 in(或 not in)運算符,我們可以很輕易地判斷出現(xiàn)有字典中是否包含某個鍵,如果存在,由于通過鍵可以很輕易的獲取對應(yīng)的值,因此很容易就能判斷出字典中是否有指定的鍵值對。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容