我有一个字典,其中每个值都是一个列表列表。
类似的东西:
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]
这个示例字典有两个键但实际上我不知道我的字典中有多少键。它可能超过两个。
你能帮忙吗?
答案 0 :(得分:2)
您正在寻找dict的 list 值之间的笛卡尔积。为了获得所需的结果,您可以使用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])]