2009-12-07 23 views
1
DICTA={'bw':['BW','VW'],'b':['BB','VV'],'a':['AA']} 
DICTB={'yn':['$YN','$YNN'],'ye':['$YE','A$Y'],'y':['Y$']} 

如何到2快譯通的每一個可能的值提取到如何提取蟒蛇快譯通的值的每一個可能值列出

["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:不做作業,但想知道如何以有效的方式實施。以下基本主題

回答

4

許多可能的輕微變種:

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) 
] 
4

我喜歡去與itertools自己,但本質上是相同Alex的解決方案:

from itertools import product 

[ 
    y.replace('$', x) 
    for (x, y) in product(sum(DICTA.values(), []), sum(DICTB.values(), [])) 
]