如何将以列表作为值的 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)]也是一个可能的结果。你无法解决这个问题(通过展开(,因为从你构建这样的字典的那一刻起,顺序就失去了。

相关内容

最新更新