平面地图列表不会丢失映射?

时间:2018-02-23 14:31:31

标签: python dictionary flatten

我有一个现有的dict,它将单个值映射到列表。 我想反转这个字典并从原始键上的每个列表条目映射。 列表条目是唯一的。

假设:

dict { 1: ['a', 'b'], 2: ['c'] }

结果:

dict { 'a' : 1, 'b' : 1, 'c' : 2 }

如何做到这一点?

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}