从字典键到其值的值创建所有组合的Python方法

问题描述 投票:2回答:2

因此,我有这样的字典:

d = {"key1": (1, 2, 3), "key2": ("3", "4", "5")}

我想要实现的(以一种真正的Python方式,没有嵌套循环,是以这种方式获取所有键值组合:

[("key1", 1), ("key1", 2), ("key1", 3), ("key2", "3"), ("key2", "4"), ("key2", "5")]

类似于键的分配值的组合,因为该值将是一个容器。

我曾尝试过itertools文档,但似乎没有任何东西可以帮助我。有什么办法可以很好地做到这一点,还是我要使用循环?

python python-3.x itertools
2个回答
6
投票

嵌套列表理解可以解决问题:

d = {"key1": (1, 2, 3), "key2": ("3", "4", "5")}
result = [(k,v) for k,values in d.items() for v in values]
print(result)

输出:

[('key1', 1), ('key1', 2), ('key1', 3), ('key2', '3'), ('key2', '4'), ('key2', '5')]

1
投票

itertools解决方案不如理解方法好,但仍然可以。

from itertools import chain, product

list(chain.from_iterable(product([k], v) for k, v in d.items()))

[('key2', '3'),
 ('key2', '4'),
 ('key2', '5'),
 ('key1', 1),
 ('key1', 2),
 ('key1', 3)]
© www.soinside.com 2019 - 2024. All rights reserved.