在Python中,如何遍历一个动态层数的嵌套字典?

11 投票
2 回答
2277 浏览
提问于 2025-04-17 04:18

好的,所谓动态就是在程序运行时不知道的意思。

这里有一个字典:

aDict[1]=[1,2,3]
aDict[2]=[7,8,9,10]
aDict[n]=[x,y]

我不知道n会有多少,但我想这样循环:

for l1 in aDict[1]:
  for l2 in aDict[2]:
    for ln in aDict[n]:
      # do stuff with l1, l2, ln combination.

有没有什么建议可以做到这一点?我对Python还比较陌生,所以请多多指教(虽然我会用PHP编程)。顺便说一下,我使用的是Python 3.1。

2 个回答

11

和DrTyrsa的想法一样,不过要确保顺序正确。

from itertools import product

for vals in product( *[aDict[i] for i in sorted(aDict.keys())]):
    print vals
12

你需要用到 itertools.product 这个工具。

from itertools import product

for vals in product(*list(aDict.values())):
    # vals will be (l1, l2, ..., ln) tuple

撰写回答