平面地图列表不丢失映射?
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}
我有一个现有的字典,可以将单个值映射到列表。 我想反转这本字典并从原始键上的每个列表条目映射。 列表条目是唯一的。
鉴于:
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}