我一直试图反转一个Python字典,即从原始字典中获取所有值,得到一个唯一的集合并将它们用作新字典的键。新键的值应该是原始dict键的列表,其中新的dict键为值。
当然有更好的方法,但我提出了:
myDict1 = {'foo0':'alpha','foo1':'alpha','bar0':'beta','bar4':'beta'}
tmpDict = dict.fromkeys(set(myDict1.values()),[])
for thingy in myDict1.keys():
tmpDict[myDict1[thingy]].append(thingy)
print(tmpDict)
将tmpDict
作为:
{'alpha': ['bar0', 'foo0', 'foo1', 'bar4'], 'beta': ['bar0', 'foo0', 'foo1', 'bar4']}
这不是预期的词典:
{'alpha': ['foo0', 'foo1'], 'beta': ['bar0', 'bar4']}
错误在哪里?
答案 0 :(得分:1)
使用fromkeys
时,所有键都指向同一个对象。在这种情况下,列表:
dict.fromkeys(set(myDict1.values()),[])
我建议使用:
dict((k, []) for k in set(myDict1.values()))
这会为每个密钥创建一个新列表。