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

Flat map list without losing mapping?

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

鉴于:

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

结果:

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

如何做到这一点?

您可以使用列表推导生成具有 key-value 对的元组,然后,展平新列表并传递给 built-in 字典函数:

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}

这里有一个选项

new_dict = {v: k for k, l in d.items() for v in l}
{'a': 1, 'b': 1, 'c': 2}