反复查字典?

2024-05-08 00:05:55 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在字典上实现以下遍历?你知道吗

a = {'Source_1': [1, 2], 'Source_2': [7, 8, 9, 10], 'Source_3': [11, 12, 13, 14]...}

If Source_1 takes 1, Source_2 takes 7, Source_3 takes 11, ..., do something
If Source_1 takes 1, Source_2 takes 7, Source_3 takes 12, ..., do something
If Source_1 takes 1, Source_2 takes 7, Source_3 takes 13, ..., do something
  ... etc
If Source_1 takes 2, Source_2 takes 10, Source_3 takes 14, ..., do something

Tags: sourceif字典etcdosomethingtakes
1条回答
网友
1楼 · 发布于 2024-05-08 00:05:55

如果您要做的是迭代包含在值中的所有元素组合,那么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)

尽管注意到在python3.6之前,dictionary值没有排序。这意味着上面的输出可能没有很好的定义。你知道吗

因此,如果您使用的是上述版本之前的版本,那么字典可能是数据结构的错误选择。你知道吗

不过,如果您承诺使用字典,则可以按希望值出现的顺序对其进行排序。举例来说,如果您希望它们按字典键排序,下面的命令将确保您获得正确的排序。你知道吗

for x in itertools.product(*map(lambda x: x[1], sorted(a.items()))):
    print(x)

相关问题 更多 >