我有一个字典,每个值是列表的列表。
类似:
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])]