我想循环遍历字典

时间:2017-03-06 14:12:52

标签: python

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

类似的东西:

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]

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

你能帮忙吗?

1 个答案:

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