我试图创建一个新的DICT使用一个现有的DICT的值列表作为单独的键。
例如:

dict1 = dict({'a':[1,2,3], 'b':[1,2,3,4], 'c':[1,2]})

我想得到:
dict2 = dict({1:['a','b','c'], 2:['a','b','c'], 3:['a','b'], 4:['b']})

到目前为止,我还没能以一种非常干净的方式做到这一点。有什么建议吗?

最佳答案

If you are using Python 2.5 or above, use the defaultdict class from the collections module; a defaultdict automatically creates values on the first access to a missing key, so you can use that here to create the lists for dict2, like this:

from collections import defaultdict
dict1 = dict({'a':[1,2,3], 'b':[1,2,3,4], 'c':[1,2]})
dict2 = defaultdict(list)
for key, values in dict1.items():
    for value in values:
        # The list for dict2[value] is created automatically
        dict2[value].append(key)

请注意,dict2中的列表不会按任何特定的顺序排列,因为字典不会按键值对排序。
如果您想在结尾处显示一个普通的dict,它将为丢失的键增加一个KeyError,只需在上面的后面使用dict2 = dict(dict2)

10-01 23:00