如何通过字典实现以下遍历?
{{1}}
答案 0 :(得分:1)
如果您想要做的是迭代值中包含的所有元素组合,那么itertools.product
相当于任意深度的嵌套for循环。
import itertools
a = {'Source_1': [1, 2], 'Source_2': [3, 4], 'Source_3': [5]}
for x in itertools.product(*a.values()):
print(x)
打印哪些:
(1, 3, 5)
(1, 4, 5)
(2, 3, 5)
(2, 4, 5)
虽然注意到Python 3.6之前的,但字典值并未排序。这意味着上面的输出可能没有明确定义。
因此,如果您使用的是上述版本,则字典可能是数据结构的错误选择。
但是,如果您承诺使用字典,则可以按照希望它们显示的顺序对值进行排序。例如,如果您希望按字典键对它们进行排序,则以下内容将确保您获得正确的排序。
for x in itertools.product(*map(lambda x: x[1], sorted(a.items()))):
print(x)