Python 遍歷字典的8種方法總結(jié)
方法一:for循環(huán)遍歷字典
使用for循環(huán)是最常見(jiàn)的遍歷字典的方法。您可以分別遍歷字典的鍵、值或鍵值對(duì)。
以下是一些示例:
#?創(chuàng)建一個(gè)示例字典
student_grades?=?{"Alice":?95,?"Bob":?88,?"Charlie":?92,?"David":?78}
#?遍歷字典的鍵
for?name?in?student_grades:
????print(name)
#?遍歷字典的值
for?grade?in?student_grades.values():
????print(grade)
#?遍歷字典的鍵值對(duì)
for?name,?grade?in?student_grades.items():
????print(f"{name}:?{grade}")
通過(guò)使用for循環(huán),可以輕松訪問(wèn)字典中的元素。這對(duì)于執(zhí)行各種操作,如查找、過(guò)濾或轉(zhuǎn)換字典中的數(shù)據(jù)非常有用。
方法二:字典方法items()遍歷
使用items()方法可以一次性獲取字典中的鍵值對(duì),然后在for循環(huán)中遍歷它們。這是一種方便的方法,尤其適用于需要同時(shí)訪問(wèn)鍵和值的情況。
#?創(chuàng)建一個(gè)示例字典
student_grades?=?{"Alice":?95,?"Bob":?88,?"Charlie":?92,?"David":?78}
#?使用items()方法遍歷字典
for?name,?grade?in?student_grades.items():
????print(f"{name}:?{grade}")
items()方法返回一個(gè)包含鍵值對(duì)的元組,可以在for循環(huán)中解包這些元組以獲取鍵和值。
方法三:字典方法keys()和values()遍歷
使用keys()方法可以獲取字典中的鍵,使用values()方法可以獲取字典中的值??梢苑謩e遍歷鍵和值,如下所示:
#?創(chuàng)建一個(gè)示例字典
student_grades?=?{"Alice":?95,?"Bob":?88,?"Charlie":?92,?"David":?78}
#?使用keys()方法遍歷字典的鍵
for?name?in?student_grades.keys():
????print(name)
#?使用values()方法遍歷字典的值
for?grade?in?student_grades.values():
????print(grade)
這兩種方法可以在for循環(huán)中單獨(dú)訪問(wèn)鍵或值,根據(jù)需要執(zhí)行不同的操作。
方法四:字典推導(dǎo)式
字典推導(dǎo)式是一種緊湊的方式來(lái)創(chuàng)建新的字典或從現(xiàn)有字典生成新的字典。可以在字典推導(dǎo)式中遍歷原字典的鍵和值,并根據(jù)條件創(chuàng)建新的鍵值對(duì)。
以下是一個(gè)示例:
#?創(chuàng)建一個(gè)示例字典
student_grades?=?{"Alice":?95,?"Bob":?88,?"Charlie":?92,?"David":?78}
#?使用字典推導(dǎo)式創(chuàng)建新字典,只包含成績(jī)大于90的學(xué)生
top_students?=?{name:?grade?for?name,?grade?in?student_grades.items()?if?grade?>?90}
print(top_students)
在上面的示例中,使用字典推導(dǎo)式創(chuàng)建了一個(gè)新的字典top_students,其中包含成績(jī)大于90的學(xué)生。
方法五:使用enumerate()函數(shù)
enumerate()函數(shù)可用于同時(shí)遍歷字典的鍵和值,并提供索引。這對(duì)于需要記錄元素的位置或索引的情況非常有用。
#?創(chuàng)建一個(gè)示例字典
student_grades?=?{"Alice":?95,?"Bob":?88,?"Charlie":?92,?"David":?78}
#?使用enumerate()函數(shù)遍歷字典的鍵和值
for?index,?(name,?grade)?in?enumerate(student_grades.items()):
????print(f"學(xué)生#{index+1}:?{name}?-?成績(jī):?{grade}")
在上面的示例中,我們使用enumerate()函數(shù)獲取了每個(gè)鍵值對(duì)的索引,并將其一起打印出來(lái)。
方法六:使用iteritems()(Python 2.x)
在Python 2.x中,有一個(gè)名為iteritems()的方法,它返回一個(gè)迭代器,允許在for循環(huán)中以更高效的方式遍歷字典的鍵值對(duì)。但需要注意的是,這個(gè)方法在Python 3.x中已被廢棄,不再可用。
#?創(chuàng)建一個(gè)示例字典(僅適用于Python?2.x)
student_grades?=?{"Alice":?95,?"Bob":?88,?"Charlie":?92,?"David":?78}
#?使用iteritems()方法遍歷字典
for?name,?grade?in?student_grades.iteritems():
????print(f"{name}:?{grade}")
在Python 3.x中,不再使用iteritems()方法,而應(yīng)使用items()方法。
方法七:使用迭代器
如果內(nèi)存限制較低或需要處理非常大的字典,可以使用迭代器來(lái)遍歷字典。iter()函數(shù)用于創(chuàng)建字典的迭代器,然后使用next()函數(shù)來(lái)逐個(gè)獲取鍵值對(duì)。
#?創(chuàng)建一個(gè)示例字典
student_grades?=?{"Alice":?95,?"Bob":?88,?"Charlie":?92,?"David":?78}
#?創(chuàng)建字典的迭代器
iterator?=?iter(student_grades)
#?遍歷字典并逐個(gè)獲取鍵值對(duì)
while?True:
????try:
????????name?=?next(iterator)
????????grade?=?student_grades[name]
????????print(f"{name}:?{grade}")
????except?StopIteration:
????????break
使用迭代器可以有效地處理大型字典,因?yàn)樗粫?huì)一次性加載所有鍵值對(duì)到內(nèi)存中。
方法八:使用回調(diào)函數(shù)
回調(diào)函數(shù)是一種自定義遍歷字典的方法。可以定義一個(gè)回調(diào)函數(shù),然后在遍歷字典時(shí)調(diào)用它,以執(zhí)行自定義操作。
#?創(chuàng)建一個(gè)示例字典
student_grades?=?{"Alice":?95,?"Bob":?88,?"Charlie":?92,?"David":?78}
#?定義一個(gè)回調(diào)函數(shù)
def?custom_callback(name,?grade):
????print(f"{name}:?{grade}")
#?遍歷字典并調(diào)用回調(diào)函數(shù)
for?name,?grade?in?student_grades.items():
????custom_callback(name,?grade)
使用回調(diào)函數(shù)可以實(shí)現(xiàn)更高度的自定義,例如將鍵值對(duì)寫入文件、將數(shù)據(jù)插入數(shù)據(jù)庫(kù)等。
總結(jié)
遍歷字典是Python中常見(jiàn)的操作,有多種方法可供選擇,取決于需求和代碼的簡(jiǎn)潔性。不同的方法適用于不同的情況,選擇合適的遍歷方法可以使代碼更加清晰和高效。
到此這篇關(guān)于Python 遍歷字典的8種方法總結(jié)的文章就介紹到這了,更多相關(guān)Python 遍歷字典內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
據(jù)Python爬蟲不靠譜預(yù)測(cè)可知今年雙十一銷售額將超過(guò)6000億元
已經(jīng)是十一月十號(hào)了,雙十一即將到來(lái),電商早已預(yù)熱多日,為了在實(shí)戰(zhàn)中獲得能力的提升,本篇文章手把手帶你用Python來(lái)預(yù)測(cè)一下今年雙十一的銷售額將會(huì)達(dá)到多少,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-11-11
Python TCPServer 多線程多客戶端通信的實(shí)現(xiàn)
這篇文章主要介紹了Python TCPServer 多線程多客戶端通信的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Python根據(jù)站點(diǎn)列表繪制站坐標(biāo)全球分布圖的示例
這篇文章主要介紹了Python根據(jù)站點(diǎn)列表繪制站坐標(biāo)全球分布圖,輸入站點(diǎn)列表文件、snx全球站點(diǎn)坐標(biāo)文件,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
Python實(shí)現(xiàn)雙X軸雙Y軸繪圖的示例詳解
這篇文章主要介紹了如何利用fig.add_subplot和axes.twinx().twiny()方法實(shí)現(xiàn)雙X軸雙Y軸繪圖,文中的示例代碼講解詳細(xì),快跟隨小編一起動(dòng)手嘗試一下吧2022-04-04
Python解決pip清華源連接超時(shí)問(wèn)題的方法總結(jié)
我們?cè)诎惭bPython包時(shí),可能會(huì)遇到pip連接清華鏡像源超時(shí),本文給大家介紹解決方法包括更換鏡像源、增加超時(shí)時(shí)間、檢查網(wǎng)絡(luò)代理/防火墻、禁用IPv6、手動(dòng)下載安裝及更新pip,優(yōu)先嘗試更換鏡像源或調(diào)整超時(shí)設(shè)置,需要的朋友可以參考下2025-06-06
python3使用sqlite3構(gòu)建本地持久化緩存的過(guò)程
日常python開發(fā)中會(huì)遇到數(shù)據(jù)持久化的問(wèn)題,今天記錄下如何使用sqlite3進(jìn)行數(shù)據(jù)持久化,并提供示例代碼及數(shù)據(jù)查看工具,需要的朋友可以參考下2023-11-11
python創(chuàng)建與遍歷二叉樹的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于python創(chuàng)建與遍歷二叉樹的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

