Как извлечь все возможные значения значений Python Dict в список - PullRequest
1 голос
/ 07 декабря 2009
DICTA={'bw':['BW','VW'],'b':['BB','VV'],'a':['AA']}
DICTB={'yn':['$YN','$YNN'],'ye':['$YE','A$Y'],'y':['Y$']}

Как извлечь все возможные значения этого 2 Dict для

["BWYN","VWYN","BBYN","VVYN","AAYN","BWYNN","VWYNN","BBYNN","VVYNN","AAYNN",
"BWYE","VWYE","BBYE","VVYE","AAYE","ABWY","AVWY","ABBY","AVVY","AAAY",
"YBW","YVW","YBB","YVV","YAA"]

PS: заказ не имеет значения

PPS: не домашнее задание, но хотелось бы знать, как это можно эффективно реализовать.

Ответы [ 2 ]

4 голосов
/ 07 декабря 2009

Мне нравится самому идти с itertools, но по сути то же самое, что и решение Алекса:

from itertools import product

[
    y.replace('$', x)
    for (x, y) in product(sum(DICTA.values(), []), sum(DICTB.values(), []))
]
4 голосов
/ 07 декабря 2009

Множество возможных минорных вариантов на следующую фундаментальную тему:

print [y.replace('$', x)
  for y in (v for y in DICTB.values() for v in y)
  for x in (v for y in DICTA.values() for v in y)
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...