我有这样的字典:
{'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)]
也是一个可能的结果。你无法解决这个问题(通过展开(,因为从你构建这样的字典的那一刻起,顺序就失去了。