我有一个现有的dict,它将单个值映射到列表。 我想反转这个字典并从原始键上的每个列表条目映射。 列表条目是唯一的。
假设:
dict { 1: ['a', 'b'], 2: ['c'] }
结果:
dict { 'a' : 1, 'b' : 1, 'c' : 2 }
如何做到这一点?
答案 0 :(得分:7)
这是一个选项
new_dict = {v: k for k, l in d.items() for v in l}
{'a': 1, 'b': 1, 'c': 2}
答案 1 :(得分:0)
您可以使用列表推导来生成具有键值对的元组,然后展平新列表并传递给内置字典函数:
d = { 1: ['a', 'b'], 2: ['c'] }
new_d = dict([c for h in [[(i, a) for i in b] for a, b in d.items()] for c in h])
输出:
{'a': 1, 'c': 2, 'b': 1}