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的列表值之间的笛卡尔积。为了获得所需的结果,您可以使用
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])] |