我想循环浏览字典值的所有可能组合



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

类似:

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

我想循环浏览列表的所有可能组合(即对我的示例中的对)(即e1 e2的一个列表,等等)。

示例更好:

我想循环通过所有这些组合:

[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的列表之间的tartesian产品。为了实现所需的结果,您可以使用itertools.product为:

>>> 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])]

最新更新