в Python, как я могу повторить вложенный dict с динамическим числом гнезд? - PullRequest
10 голосов
/ 14 октября 2011

ОК, под динамическим я имею в виду неизвестный во время выполнения.

вот диктовка:

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 голосов
/ 14 октября 2011

Та же идея, что и у DrTyrsa, но убедившись, что порядок правильный.

from itertools import product

for vals in product( *[aDict[i] for i in sorted(aDict.keys())]):
    print vals
11 голосов
/ 14 октября 2011

Вам нужно itertools.product .

from itertools import product

for vals in product(*list(aDict.values())):
    # vals will be (l1, l2, ..., ln) tuple
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...