如何展开一个列表作为值的Python字典到两个元素的键值元组列表?
问题描述:
我有这样的字典:如何展开一个列表作为值的Python字典到两个元素的键值元组列表?
{'a': [1, 2], 'b': [4, 5, 6]}
我想知道如何把它展开成像这样的元组的列表:
[('a', 1), ('a', 2), ('b', 4), ('b', 5), ('b', 6)]
什么是实现这一目标的最佳途径Python 3?
答
只需使用列表理解:
[(k,vi) for k,v in d.items() for vi in v]
与样品的输入,这会产生:
>>> d = {'a': [1, 2], 'b': [4, 5, 6]}
>>> [(k,vi) for k,v in d.items() for vi in v]
[('a', 1), ('a', 2), ('b', 4), ('b', 5), ('b', 6)]
注意,在大多数Python版本(不是最新的一个),字典是无序的。因此,密钥的顺序可以在输出方面有所不同(而不是/密钥)。所以[('b', 4), ('b', 5), ('b', 6), ('a', 1), ('a', 2)]
也是一个可能的结果。你无法解决这个问题(展开),因为从你构建这样的字典的那一刻起,订单就会丢失。