掌握Python字典的8個(gè)示例
點(diǎn)擊上方“AI算法與圖像處理”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
引言
數(shù)據(jù)結(jié)構(gòu)是任何編程語言的關(guān)鍵部分。為了創(chuàng)建健壯和性能良好的產(chǎn)品,必須非常了解數(shù)據(jù)結(jié)構(gòu)。
在本文中,我們將研究Python編程語言的重要數(shù)據(jù)結(jié)構(gòu),即字典(Dictionary)。
字典是鍵值對的無序集合。每個(gè)條目都有一個(gè)鍵和值。字典可以視為具有特殊索引的列表。
鍵必須是唯一的和不可變的。因此,我們可以使用字符串、數(shù)字(整型或浮點(diǎn)型)或元組作為鍵。值可以是任何類型。
考慮一個(gè)我們需要存儲(chǔ)學(xué)生成績的案例。我們可以將它們存儲(chǔ)在字典或列表中。

通過使用字典,我們可以通過提供學(xué)生的姓名(鍵)來查詢每個(gè)學(xué)生的成績。然而在列表中,為了能夠獲得特定學(xué)生的成績,我們需要一個(gè)額外的列表。
新列表包含學(xué)生的姓名,并且與成績列表完全相同的順序。

因此,對于這種情況,字典是比列表更好的選擇。
簡短介紹之后,讓我們開始深入研究字典的示例。這些示例將涵蓋詞典的功能以及對其進(jìn)行操作的功能和方法。
1.?創(chuàng)建字典
我們可以通過在花括號(hào)之間提供0個(gè)或更多的鍵值對來創(chuàng)建字典。
empty_dict = {}grades = {'John':'A', 'Emily':'A+', 'Betty':'B', 'Mike':'C', 'Ashley':'A'}grades{'Ashley': 'A', 'Betty': 'B', 'Emily': 'A+', 'John': 'A', 'Mike': 'C'}
2.?訪問值
我們通過提供索引來訪問列表中的值。類似地,在字典中,通過使用鍵來訪問值。
grades['John']'A'grades.get('Betty')'B'
3.?所有值/所有鍵
keys方法用于獲取所有鍵。
grades.keys()dict_keys(['John', 'Emily', 'Betty', 'Mike', 'Ashley'])
返回對象是一個(gè)可迭代的dict_keys對象。因此,我們可以在for循環(huán)中對其進(jìn)行迭代訪問。
類似地,value方法返回所有值。
grades.values()dict_values(['A', 'A+', 'B', 'C', 'A'])
我們無法在dict_keys或dict_values上建立索引,但可以將它們轉(zhuǎn)換為列表,然后使用索引。
list(grades.values())[0]'A'
items方法返回元組中的鍵值對。
grades.items()dict_items([('John', 'A'), ('Emily', 'A+'), ('Betty', 'B'), ('Mike', 'C'), ('Ashley', 'A')])
4.?更新或添加項(xiàng)目
字典是可變的,因此我們可以更新、添加或刪除項(xiàng)目。更新或添加項(xiàng)的語法是相同的。如果字典中存在給定的鍵,則更新現(xiàn)有項(xiàng)的值。否則,將創(chuàng)建一個(gè)新項(xiàng)(即鍵值對)。
grades['Edward'] = 'B+'grades['John'] = 'B'grades{'Ashley': 'A','Betty': 'B','Edward': 'B+','Emily': 'A+','John': 'B','Mike': 'C'}
5.?刪除項(xiàng)目
我們可以使用del或pop函數(shù)刪除一個(gè)項(xiàng)目。我們只是傳遞要?jiǎng)h除項(xiàng)目的鍵。
del(grades['Edward'])grades.pop('Ashley')'A'grades'Betty': 'B', 'Emily': 'A+', 'John': 'B', 'Mike': 'C'}
與del函數(shù)不同,pop函數(shù)返回被刪除項(xiàng)的值。因此,我們可以選擇將它賦給一個(gè)變量。
6.?遍歷字典
我們可以遍歷字典。默認(rèn)情況下,變例基于鍵的。
for i in grades:print(i)JohnEmilyBettyMike
7.從列表中創(chuàng)建一個(gè)字典
我們可以使用列表或元組列表創(chuàng)建字典。
a = [['A',4], ['B',5], ['C',11]]dict(a){'A': 4, 'B': 5, 'C': 11}b = [('A',4), ('B',5), ('C',11)]dict(b){'A': 4, 'B': 5, 'C': 11}
8.復(fù)制字典
grades = {'John':'A', 'Emily':'A+', 'Betty':'B'}dict1 = gradesdict2 = grades.copy()dict3 = dict(grades)
所有的dict1,dict2和dict3都包含與grades完全相同的鍵值對。但是,dict1只是指向grades中鍵/值對的指針。因此,grades的任何變化也將改變dict1。
dict2和dict3是內(nèi)存中的獨(dú)立對象,因此它們不會(huì)受到grades變化的影響。

我們需要特別注意如何復(fù)制字典。
總結(jié)
Dictionary 是 Python 中非常重要的數(shù)據(jù)結(jié)構(gòu),在許多情況下都會(huì)使用。我們在這篇文章中舉的例子將會(huì)涵蓋大部分你需要了解的關(guān)于字典的知識(shí)。它們會(huì)讓你在使用字典的時(shí)候感覺很順暢。
個(gè)人微信(如果沒有備注不拉群!) 請注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱
下載1:何愷明頂會(huì)分享
在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析
下載2:終身受益的編程指南:Google編程風(fēng)格指南
在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):c++,即可下載。歷經(jīng)十年考驗(yàn),最權(quán)威的編程規(guī)范!
下載3 CVPR2020 在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):CVPR2020,即可下載1467篇CVPR?2020論文
覺得不錯(cuò)就點(diǎn)亮在看吧


