迭代字典?

时间:2018-05-18 21:49:38

标签: python dictionary iterator

如何通过字典实现以下遍历?

{{1}}

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)