欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python交換字典鍵值對(duì)的四種方法實(shí)例

 更新時(shí)間:2022年12月05日 15:28:35   作者:枉費(fèi)紅箋  
字典中有成對(duì)出現(xiàn)的鍵和值,但是字典中的鍵值對(duì)不是都能修改的,只有值才能修改,下面這篇文章主要給大家介紹了關(guān)于Python交換字典鍵值對(duì)的四種方法,需要的朋友可以參考下

前言

在學(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類中的defaultdict()方法來(lái)為字典提供默認(rèn)值。該函數(shù)返回一個(gè)類似字典的對(duì)象。defaultdict是Python內(nèi)建字典類(dict)的一個(gè)子類。

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)文章

  • Django使用視圖動(dòng)態(tài)輸出CSV以及PDF的操作詳解

    Django使用視圖動(dòng)態(tài)輸出CSV以及PDF的操作詳解

    這篇文章主要介紹了Django 如何使用視圖動(dòng)態(tài)輸出 CSV 以及 PDF,我們需要用到 python 的 csv 和 reportLab 庫(kù),通過(guò)django視圖來(lái)定義輸出我們需要的 csv 或者 pdf 文件,需要的朋友可以參考下
    2024-06-06
  • python 讀寫csv文件方式(創(chuàng)建,追加,覆蓋)

    python 讀寫csv文件方式(創(chuàng)建,追加,覆蓋)

    這篇文章主要介紹了python 讀寫csv文件方式(創(chuàng)建,追加,覆蓋),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python 人工智能老照片修復(fù)算法學(xué)習(xí)

    Python 人工智能老照片修復(fù)算法學(xué)習(xí)

    老舊或者破損的照片如何修復(fù)呢?本文主要介紹了一個(gè)非常不錯(cuò)的照片恢復(fù)開(kāi)源項(xiàng)目:Bringing-Old-Photos-Back-to-Life。感興趣的小伙伴快來(lái)看看呀
    2021-11-11
  • windows下Virtualenvwrapper安裝教程

    windows下Virtualenvwrapper安裝教程

    這篇文章主要為大家詳細(xì)介紹了windows下Virtualenvwrapper安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • python實(shí)現(xiàn)最大子序和(分治+動(dòng)態(tài)規(guī)劃)

    python實(shí)現(xiàn)最大子序和(分治+動(dòng)態(tài)規(guī)劃)

    這篇文章主要介紹了python實(shí)現(xiàn)最大子序和(分治+動(dòng)態(tài)規(guī)劃),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 使用python爬取連續(xù)降水?dāng)?shù)據(jù)信息實(shí)例

    使用python爬取連續(xù)降水?dāng)?shù)據(jù)信息實(shí)例

    這篇文章主要為大家介紹了使用python提取連續(xù)降水?dāng)?shù)據(jù)信息實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • python實(shí)現(xiàn)12306登錄并保存cookie的方法示例

    python實(shí)現(xiàn)12306登錄并保存cookie的方法示例

    這篇文章主要介紹了 python實(shí)現(xiàn)12306登錄并保存cookie的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Python標(biāo)準(zhǔn)庫(kù)之循環(huán)器(itertools)介紹

    Python標(biāo)準(zhǔn)庫(kù)之循環(huán)器(itertools)介紹

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)之循環(huán)器(itertools)介紹,本文講解了無(wú)窮循環(huán)器、函數(shù)式工具、組合工具、groupby()、其它工具等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • 超簡(jiǎn)單的scrapy實(shí)現(xiàn)ip動(dòng)態(tài)代理與更換ip的方法實(shí)現(xiàn)

    超簡(jiǎn)單的scrapy實(shí)現(xiàn)ip動(dòng)態(tài)代理與更換ip的方法實(shí)現(xiàn)

    這篇文章主要介紹了超簡(jiǎn)單的scrapy實(shí)現(xiàn)ip動(dòng)態(tài)代理與更換ip的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 詳解Python里使用正則表達(dá)式的ASCII模式

    詳解Python里使用正則表達(dá)式的ASCII模式

    ASCII(American Standard Code for Information Interchange),是一種單字節(jié)的編碼。這篇文章主要介紹了Python里使用正則表達(dá)式的ASCII模式,需要的朋友可以參考下
    2017-11-11

最新評(píng)論