简体   繁体   中英

in python, how do i iterate a nested dict with a dynamic number of nests?

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

You need itertools.product .

from itertools import product

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM