溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python字典和集合如何使用

發(fā)布時間:2022-11-03 10:14:18 來源:億速云 閱讀:98 作者:iii 欄目:開發(fā)技術

這篇文章主要介紹“Python字典和集合如何使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Python字典和集合如何使用”文章能幫助大家解決問題。

字典簡介

Python 中字典和集合也是非常相近的概念,而且從外觀看上去,也有那么一絲絲的相似,Python 語言中字典類型是非常靈活的,在實戰(zhàn)中的使用場景非常多,后續(xù)項目課中會反復涉及。

本篇博會從字典基本知識入手,為你展開字典類型數(shù)據(jù)的各個知識點。

首先我們看一下定義:

字典,是可變的無序集合(在 Python 最新版本中,已經(jīng)變?yōu)橛行颍?,它是一種以鍵值對為基本元素,可以存放各種數(shù)據(jù)類型的容器,用大括號({})表示字典的開始和結(jié)束,元素之間用逗號(,)進行分隔。

前面這段話的重點是【鍵值對】,也就是說字典中的每一個元素(每一項)都是由鍵和值組成的集合,先記住兩個單詞,鍵(Key)和值(Value),鍵值對中間用冒號(:)分隔,例如字典中的一個元素(name:'橡皮擦'),前面的 name 就是鍵,后面的字符串 橡皮擦 就是值,從鍵值對可以看出,字典屬于一對一的映射關系。

字典的聲明

使用空的大括號,可以直接聲明一個空字典。

my_dict= {}
print(my_dict)

定義一個只有一個元素的字典。

my_dict= {'name':'橡皮擦'}
print(my_dict)

定義由多個元素的字典。

my_dict= {'name':'橡皮擦','age':19}
print(my_dict)

字典設置時對鍵和值的要求 鍵的要求如下: 鍵要唯一,也就是一個字典對象所有的鍵必須唯一,出現(xiàn)相同的鍵值對,只保留最后一個,例如下述代碼:

my_dict= {'name':'橡皮擦','name':'擦哥','age':19}
print(my_dict)

鍵名無法直接修改,只能刪除原有鍵值對,再新增鍵值對實現(xiàn)對鍵名的修改。

字典的基本方法

字典作為 Python 中的一個普通對象,其存在一些基本操作方法,具體如下。

  • clear():清空字典;

  • get():通過指定鍵,或者對應值,如果鍵不存在,返回 None;

  • keys():獲取所有鍵;

  • values():獲取字典中所有值;

  • items():以元組格式返回字典中的所有元素;

  • fromkeys():使用給定的鍵建立新字典,每個鍵對應的值默認為 None,可以初始化一個字典;

  • pop():刪除指定鍵,并返回鍵對應的值;

  • popitem():隨機返回元素,并刪除;

  • setdefault():設置鍵值對,當字典中鍵不存在,新增,當字典中存在鍵值對時,獲取對應的值;

  • update():使用一個字典更新另一個字典;

字典元素添加

向字典中添加元素,可以使用如下幾種形式。

第一種,直接添加,即一次性添加鍵值對。

my_dict= {'name':'橡皮擦'}
my_dict["age"] = 19 # 直接添加
print(my_dict)

用上述方法添加鍵值對,需要注意添加的鍵在原字典中不存在,否則會執(zhí)行更新操作。

第二種,通過 setdefault() 給字典添加新鍵值對,代碼如下:

my_dict= {'name':'橡皮擦'}
my_dict.setdefault('age',19)
print(my_dict)

setdefault() 方法添加已存在的鍵時,不執(zhí)行添加操作,會返回原鍵對應的值,請測試下述代碼。

my_dict= {'name':'橡皮擦'}
my_dict.setdefault('name',19)
print(my_dict)

獲取字典鍵對應的值

通過鍵獲取值,有如下兩種形式,例如通過指定鍵查找對應值。

my_dict= {'name':'橡皮擦'}
ret = my_dict['name']
print(ret)

該方法如果指定了一個不存在的鍵,會直接報錯,錯誤信息如下所示。

---------------------------------------------------------------------------
KeyError    Traceback (most recent call last)
<ipython-input-11-3e4eeea728e6> in <module>
      1 my_dict= {'name':'橡皮擦'}
----> 2 ret = my_dict['name1']
      3 print(ret)

KeyError: 'name1'

使用 get() 方法也可以獲取鍵對應的值,使用該方法獲取值的時候,如果鍵不存在,不會報錯,并且返回 None。

my_dict= {'name':'橡皮擦'}
ret = my_dict.get('name1')
print(ret)

如果不希望結(jié)果返回 None,可以設置缺省返回值,即使用 get() 方法的第二個參數(shù)。

my_dict= {'name':'橡皮擦'}
ret = my_dict.get('name1','無該值')
print(ret)

字典元素的修改

字典由于鍵不可被修改,所以只能修改值,下面的兩個方法都可以修改值。 第一種方法在前文已經(jīng)學習,即使用中括號加鍵進行修改,這里咱們不再重復講解,而為大家介紹 update() 方法,該方法可以通過字典修改原字典。

my_dict= {'name':'橡皮擦'}
my_dict.update({'name':'大橡皮擦','age':19})
print(my_dict)

使用 update() 方法過程中,你需要注意到,該方法還可以對原字典進行新增操作,即當待添加的字典中存在原字典未包含的鍵時,會執(zhí)行新增操作。

字典元素的刪除

有 1 個函數(shù)和 2 個方法可以實現(xiàn)字典元素的刪除。 第一個函數(shù)是 del(),該函數(shù)可以直接刪除字典對象,也可以刪除字典中的鍵值對,代碼如下:

my_dict= {'name':'橡皮擦'}
my_dict.update({'name':'大橡皮擦','age':19})
del(my_dict['age'])

print(my_dict)

使用 pop() 方法刪除,示例代碼如下:

my_dict= {'name':'橡皮擦'}
my_dict.update({'name':'大橡皮擦','age':19})
ret = my_dict.pop('age')

print(ret)

如果使用 pop() 方法刪除不存在的值,會直接報錯,未防止該現(xiàn)象發(fā)生,可以使用 pop() 方法的第二個參數(shù)。

my_dict= {'name':'橡皮擦'}
my_dict.update({'name':'大橡皮擦','age':19})
ret = my_dict.pop('age1',10010)

print(ret)

使用 popitem() 方法會隨機刪除一個元素,示例代碼如下:

my_dict= {'name':'橡皮擦'}
my_dict.update({'name':'大橡皮擦','age':19})
ret = my_dict.popitem()

print(ret)

字典的遍歷

使用 keys(),values()items() 可以對字典進行遍歷,其對應關系分別是遍歷所有鍵,遍歷所有值,遍歷所有鍵值。

my_dict= {'name':'橡皮擦'}
my_dict.update({'name':'大橡皮擦','age':19})
print(my_dict.keys())
print(my_dict.values())
print(my_dict.items())

輸出結(jié)果如下:

dict_keys(['name', 'age'])
dict_values(['大橡皮擦', 19])
dict_items([('name', '大橡皮擦'), ('age', 19)])

集合學習

首先依舊是掌握集合的定義,集合是一個無序的,可變的,不重復的容器,集合用大括號({})標記開始和結(jié)束,中間的元素用逗號進行分隔,集合可以容納任意類型的數(shù)據(jù),而字典其實是特殊的集合,所以在學習的時候,可以對比字典進行練習。

集合的定義 集合也是使用大括號({})定義的,但不能使用一個空大括號,這樣 Python 會認為聲明了一個空字典,如果希望聲明空集合,需要用 set() 函數(shù)。

my_set= set()
print(my_set)

聲明包含一個元素的集合。

my_set = {1,}
print(type(my_set))

集合添加元素

使用 add() 方法可以添加元素,示例代碼如下所示:

my_set = set()
my_set.add('橡皮擦')
print(my_set)

使用 update() 可以一次增加一個元素,也可以增加多個元素。

my_set = set()
my_set.update({'橡皮擦',28})
print(my_set)

集合刪除元素

使用 discard()、remove()、pop() 方法可以刪除集合中的元素,示例代碼如下。 使用 discard() 可以刪除指定元素,若元素不存在,不報錯(很重要)

my_set = set()
my_set.update({'橡皮擦',28,'石家莊','產(chǎn)品經(jīng)理'})


my_set.discard('石家莊')

print(my_set)

使用 remove() 可以刪除指定元素,若元素不存在,報錯(很重要)

my_set = set()
my_set.update({'橡皮擦',28,'石家莊','產(chǎn)品經(jīng)理'})


my_set.remove('石家莊')

print(my_set)

使用 pop() 可以隨機刪除一個元素,并返回被刪除的元素

統(tǒng)計集合個數(shù),判斷元素是否存在,清空集合

如題所示,該小節(jié)存在 3 個知識點,分別是 len()、in 成員運算符、clear(),示例代碼如下。

len() 函數(shù)用法

my_set = set()
my_set.update({'橡皮擦',28,'石家莊','產(chǎn)品經(jīng)理'})

my_set.discard('石家莊')

print(len(my_set))

in 成員運算符用法

my_set = set()
my_set.update({'橡皮擦',28,'石家莊','產(chǎn)品經(jīng)理'})

ret = '石家莊' in my_set

print(ret)

clear() 方法使用

my_set = set()
my_set.update({'橡皮擦',28,'石家莊','產(chǎn)品經(jīng)理'})

my_set.clear()

print(my_set)

集合運算

Python 語言中的集合于數(shù)學中的集合概念基本一致,所以其包含交并差集的計算,接下來為大家逐一說明。

求并集 union() 方法

A = {1,2,3}
B = {4,5,1}
ret = A.union(B)
print(ret)

還可以使用 | 符號。

A = {1,2,3}
B = {4,5,1}
ret = A | B
print(ret)

求交集 intersection() 方法,也可以使用 intersection_update() 方法 二者的區(qū)別是前者返回新集合,后者在原集合上進行更新。

A = {1,2,3}
B = {4,5,1}
ret = A.intersection(B)
print(ret)

對比下述代碼,查看區(qū)別。

A = {1,2,3}
B = {4,5,1}
ret = A.intersection_update(B)
print(ret) # 返回None
print(A)

使用符號 & 也可以實現(xiàn)交集操作,同 intersection() 方法。

求差集 difference() 方法 求差異的時候需要注意誰在前誰在后問題,即 A-B 和 B-A 得到的結(jié)果是不同的。

A = {1,2,3}
B = {4,5,1}
ret = A.difference(B)
print(ret)

求差異也可以使用符號 - 實現(xiàn),代碼請自行編寫。

關于“Python字典和集合如何使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI