关于python:我想循环遍历字典中所有可能的值组合

I want to loop through all possible combinations of values of a dictionary

本问题已经有最佳答案,请猛点这里访问。

我有一本字典,每一个值都是一个列表。

类似:

1
sites = {'e1': [[0, 1, 3], [0, 2, 3]], 'e2': [[0, 1, 4], [0, 3, 4]]}

我想循环遍历所有可能的列表组合(例如,在我的示例中是成对列表)(即一个EDOCX1[0]列表+一个EDOCX1[1]列表等)。

更好的例子是:

我想循环遍历所有这些组合:

1
2
3
4
[0, 1, 3]; [0, 1, 4]
[0, 1, 3]; [0, 3, 4]
[0, 2, 3]; [0, 1, 4]
[0, 2, 3]; [0, 3, 4]

这个示例字典有两个键,但实际上我不知道我的字典中有多少个键。可能不止两个。

你能帮忙吗?


您正在查找dict的列表值之间的笛卡尔积。为了获得所需的结果,您可以使用itertools.product作为:

1
2
3
4
5
6
7
8
>>> from itertools import product
>>> sites = {'e1': [[0, 1, 3], [0, 2, 3]], 'e2': [[0, 1, 4], [0, 3, 4]]}

>>> list(product(*sites.values()))
[([0, 1, 3], [0, 1, 4]),
 ([0, 1, 3], [0, 3, 4]),
 ([0, 2, 3], [0, 1, 4]),
 ([0, 2, 3], [0, 3, 4])]