in python, how do i iterate a nested dict with a d

2019-04-05 11:01发布

OK by dynamic I mean unknown at runtime.

here is a dict:

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

I don't know how many n will be but I want to loop as follows:

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

Any suggestions on how to do this? I am relatively new to python so please be gentle (although I do program in php). BTW I am using python 3.1

标签: python nested
2条回答
倾城 Initia
2楼-- · 2019-04-05 11:07

You need itertools.product.

from itertools import product

for vals in product(*list(aDict.values())):
    # vals will be (l1, l2, ..., ln) tuple
查看更多
forever°为你锁心
3楼-- · 2019-04-05 11:18

Same idea as DrTyrsa, but making sure order is right.

from itertools import product

for vals in product( *[aDict[i] for i in sorted(aDict.keys())]):
    print vals
查看更多
登录 后发表回答