【发布时间】:2022-01-25 16:21:38
【问题描述】:
我一直在努力。我有以下字典。
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'] 的字符串加入'James Lydia Michael' 以便它可以成为有效的密钥?如何对列表['Michael','James','Lydia'] 和['Michael','Lydia','James'] 中的元素进行排序,以便在我加入它们之前按字母顺序排列?
这是一个更容易实现的输出:
{'James Lydia Michael': {(Subject1, Subject2), (Subject3, Subject4)},
'Tom': {(Subject5, Subject6)},
'None': {(Subject7, Subject8), (Subject9, Subject10)} }
【问题讨论】:
-
您不能将列表用作字典键。
-
...但您可以使用元组代替
-
字典键是不可变的 我现在知道了。谢谢!
标签: python dictionary