Python交換字典鍵值對(duì)的四種方法實(shí)例
前言
在學(xué)習(xí)過(guò)程中發(fā)現(xiàn)有時(shí)候交換字典的鍵和值,會(huì)使得我們最后的輸出結(jié)果更加直觀明了,整理出以下四種交換方式(data是原字典,new_data 是交換后的字典)
一、當(dāng)值唯一時(shí)
1. 使用zip進(jìn)行交換
data= {'A':1, 'B':2, 'C':3}
new_data = dict(zip(data.values(), data.keys()))
print(new_data)
# 運(yùn)行結(jié)果
# {1: 'A', 2: 'B', 3: 'C'}
2. 使用for循環(huán)遍歷交換
data= {'A':1, 'B':2, 'C':3}
new_data = {}
for key, val in data.items():
new_data[val] = key
print(new_data)
# 運(yùn)行結(jié)果
# {1: 'A', 2: 'B', 3: 'C'}
3. 使用dict.items()交換
new_data = dict([val, key] for key, val in data.items())
print(new_data)
# 運(yùn)行結(jié)果
# {1: 'A', 2: 'B', 3: 'C'}
上述三種方式的前提條件是值唯一。如果data = {'A': 1, 'B': 2, 'C': 3, 'D': 3},最后輸出結(jié)果是{1: 'A', 2: 'B', 3: 'D'},C會(huì)被D代替。
二、當(dāng)值不唯一時(shí)
如果值不唯一,可以使用下面這種方式,最后輸出結(jié)果是{1: ['A'], 2: ['B'], 3: ['C', 'D']}
from collections import defaultdict
def main():
data = {'A': 1, 'B': 2, 'C': 3, 'D': 3}
new_data = defaultdict(list)
for key, val in data.items():
new_data[val].append(key)
print(new_data)
# 運(yùn)行結(jié)果
# {1: ['A'], 2: ['B'], 3: ['C', 'D']}Python中通過(guò)Key訪問(wèn)字典,當(dāng)Key不存在時(shí),會(huì)引發(fā)‘KeyError’異常。為避免這種情況的發(fā)生,可以使用collections類(lèi)中的defaultdict()方法來(lái)為字典提供默認(rèn)值。該函數(shù)返回一個(gè)類(lèi)似字典的對(duì)象。defaultdict是Python內(nèi)建字典類(lèi)(dict)的一個(gè)子類(lèi)。
dict = defaultdict(factory_function) # factory_function可以是list、set、str等等,作用是當(dāng)key不存在時(shí),返回的是工廠函數(shù)的默認(rèn)值
當(dāng)字典中沒(méi)有的鍵第一次出現(xiàn)時(shí),default_factory自動(dòng)為其返回一個(gè)空列表,list.append()會(huì)將值添加進(jìn)新列表;再次遇到相同的鍵時(shí),list.append()將其值再添加進(jìn)該列表。
總結(jié)
到此這篇關(guān)于Python交換字典鍵值對(duì)的四種方法的文章就介紹到這了,更多相關(guān)Python交換字典鍵值對(duì)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)批量繪制遙感影像數(shù)據(jù)的直方圖
這篇文章主要為大家詳細(xì)介紹了如何基于Python中g(shù)dal模塊,實(shí)現(xiàn)對(duì)大量柵格圖像批量繪制直方圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02
使用python-pptx包批量修改ppt格式的實(shí)現(xiàn)
今天小編就為大家分享一篇使用python-pptx包批量修改ppt格式的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
python selenium 執(zhí)行完畢關(guān)閉chromedriver進(jìn)程示例
今天小編就為大家分享一篇python selenium 執(zhí)行完畢關(guān)閉chromedriver進(jìn)程示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別
這篇文章主要介紹了Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
python實(shí)現(xiàn)堆排序的實(shí)例講解
在本篇文章里小編給大家分享的是一篇關(guān)于python實(shí)現(xiàn)堆排序的實(shí)例講解內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-02-02
Python成功解決TypeError: ‘method’ object is
在Python編程中,有時(shí)候我們可能會(huì)遇到一個(gè)讓人摸不著頭腦的錯(cuò)誤信息:TypeError: 'method' object is not subscriptable,本文給大家介紹了Python如何成功解決TypeError: ‘method’ object is not subscriptable,需要的朋友可以參考下2024-06-06
Python+wxauto實(shí)現(xiàn)微信自動(dòng)化操作
在眾多自動(dòng)化工具中,Python的wxauto庫(kù)以其強(qiáng)大的功能和簡(jiǎn)單易用的特點(diǎn),為我們打開(kāi)了微信自動(dòng)化操作的大門(mén),下面我們就來(lái)看看它的具體操作吧2025-02-02

