我一直在為此努力。我有以下字典。
Subject1='Math'
Subject2='English'
Subject3='Chemstry'
Subject4='Physics'
Subject5='Geology'
Subject6='PE'
Subject7='Music'
Subject8='Psychology'
Subject9='Politics'
Subject10='Acting'
dict_1 = {(Subject1, Subject2):['Michael','James','Lydia'],
(Subject3, Subject4):['Michael','Lydia','James'],
(Subject5, Subject6):['Tom'],
(Subject7, Subject8):[],
(Subject9, Subject10):[]
}
我想反轉字典,使其看起來像:
{['Michael', 'James', 'Lydia']: {(Subject1, Subject2), (Subject3, Subject4)},
['Tom']: {(Subject5, Subject6)},
[]: {(Subject7, Subject8), (Subject9, Subject10)} }
我試過
from collections import defaultdict
new_tel = defaultdict(list)
for key, value in dict_1.items():
new_tel[value].append(key)
這適用于可散列型別但不適用于不可散列型別串列。也許我可以加入['Michael','James','Lydia']to 'James Lydia Michael'的字串,以便它可以是一個有效的鍵?如何在串列中的元素進行排序['Michael','James','Lydia'],并['Michael','Lydia','James']讓他們按字母順序排列之前,我加入他們的行列?
這是一個更容易實作的輸出:
{'James Lydia Michael': {(Subject1, Subject2), (Subject3, Subject4)},
'Tom': {(Subject5, Subject6)},
'None': {(Subject7, Subject8), (Subject9, Subject10)} }
uj5u.com熱心網友回復:
字典鍵不能是串列,但可以是元組。因此,您可以執行以下操作。對值進行排序,使它們成為用作鍵的元組并使用dict.setdefault:
out = {}
for k,v in dict_1.items():
out.setdefault(tuple(sorted(v)), set()).add(k)
輸出:
{('James', 'Lydia', 'Michael'): {('Chemstry', 'Physics'), ('Math', 'English')},
('Tom',): {('Geology', 'PE')},
(): {('Music', 'Psychology'), ('Politics', 'Acting')}}
uj5u.com熱心網友回復:
正如問題中所說,評論串列是不可哈希的。如果您可以改用元組,“Dict Comprehensions”是一個好方法。更多資訊:https : //www.python.org/dev/peps/pep-0274/。
dict_reverse = {tuple(dict_1[key]): key for key in dict_1.keys()}
uj5u.com熱心網友回復:
最簡單的方法是使用tupleas 鍵型別
for key, value in dict_1.items():
new_tel[tuple(sorted(value))].append(key)
{('James', 'Lydia', 'Michael'): [('Math', 'English'), ('Chemstry', 'Physics')],
('Tom',): [('Geology', 'PE')],
(): [('Music', 'Psychology'), ('Politics', 'Acting')]})
如果您加入將密鑰型別設定為 str
for key, value in dict_1.items():
new_tel[" ".join(sorted(value))].append(key)
{'James Lydia Michael': [('Math', 'English'), ('Chemstry', 'Physics')],
'Tom': [('Geology', 'PE')],
'': [('Music', 'Psychology'), ('Politics', 'Acting')]})
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/393714.html
上一篇:訪問字典鍵內的字典鍵
