亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 python dict 切換值和鍵?

如何使用 python dict 切換值和鍵?

慕妹3146593 2022-01-11 17:16:06
我的輸入是:files = {    'Input.txt': 'Randy',    'Code.py': 'Stan',    'Output.txt': 'Randy'} 我希望輸出為:{'Randy':['Input.txt','Output.txt'], 'Stan':['Code.py']}基本上它是列表字典中此開關鍵和值的另一個方向這是我嘗試過的:dictresult= {}for key,value in files.items():     dictresult[key]=value     dictresult[value].append(key)但它不起作用。我明白了KeyError: 'Randy'
查看完整描述

3 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

這是一個簡單的方法,我們在迭代keys和values你原來的字典中files,并為每個值追加到它與該值對應的所有密鑰創建列表。


files = {

    'Input.txt': 'Randy',

    'Code.py': 'Stan',

    'Output.txt': 'Randy'

}


dictresult= {}


for k, v in files.items():

    if v not in dictresult:

        dictresult[v] = [k]

    else:

        dictresult[v].append(k)


print(dictresult) # -> {'Randy': ['Output.txt', 'Input.txt'], 'Stan': ['Code.py']}


查看完整回答
反對 回復 2022-01-11
?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

您的代碼存在一些問題。


我們來復習:


首先,您收到鍵錯誤,因為您試圖將一個值附加到不存在的鍵。為什么?因為在您之前的聲明中,您向 dict[key] 添加了一個值,現在您正在嘗試訪問/附加 dict[value]。


dictresult[key]=value

您正在為新生成的密鑰分配值,無需任何檢查。每個新值都會覆蓋它。


dictresult[value].append(key)

然后,您嘗試使用錯誤的鍵將新值附加到字符串。

您可以通過以下代碼實現您想要的:


d = {}

for key,value in files.items():

if value in d:

    d[value].append(key)

else:

    d[value] = [key]

print(d)

它將輸出:


{'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}

它如何/為什么起作用?


我們來復習:


if 條件檢查該鍵是否已存在于字典中。當遍歷一個字典時,它只返回它的鍵,而不像 dict.items() 那樣返回鍵值對

如果鍵在那里,我們只需將當前值附加到它。

在其他情況下,如果該鍵不存在,我們向字典添加一個新鍵,但我們通過將其轉換為列表來實現,否則字符串將作為值插入,而不是列表,您將無法附加到它。


查看完整回答
反對 回復 2022-01-11
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

嘗試使用defaultdict -


from collections import defaultdict

dictresult= defaultdict(list)

for key,value in files.items():

     dictresult[value].append(key)

這將假設字典中的每個項目都有一個空列表,因此附加不會失敗


查看完整回答
反對 回復 2022-01-11
  • 3 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號