2017-01-05 8 views
-2

私はかなりPython(〜6ヶ月)に新しく、itertoolsにとって非常に新しいです。私はプロセスに使う最高/最速のitertools関数についてのガイダンスを見つけたいと思っています(itertoolsにする必要はありませんが、私の研究を通して最良の方法です)。関数の上と下に多くのループを積み重ねて簡潔にする予定です...Python Itertoolsのベストロジック

私は特定の順序でシンボルのリストを持っており、各シンボルには辞書を介してユニークな番号のリストが割り当てられています。つまり、シンボルは別のシンボルと同じ番号を持たず、その数は繰り返されません。各シンボルのサブセットのすべての固有の組み合わせのリストを生成する必要があります。

は、以下の例を参照:

入力リスト: RI、WH、RI、FA

入力辞書: {RI:[1,2]、WH:[3,4,5] FA:[6]}

出力: - 1,3,1,6 - 2,3,2,6 - 1,4,1,6 - 2,4,2,6 - 1,5,1,6 -2,5,2,6

答えて

-1

たぶん、このような何かがあなたのために動作します:

from itertools import product 

data = {'RI': [1,2], 'WH': [3,4,5], 'FA': [6]} 
inp = ['RI', 'WH', 'RI', 'FA'] 
lists = [data[x] for x in inp] 

print list(product(*lists)) 

出力:

[(1, 3, 1, 6), 
(1, 3, 2, 6), 
(1, 4, 1, 6), 
(1, 4, 2, 6), 
(1, 5, 1, 6), 
(1, 5, 2, 6), 
(2, 3, 1, 6), 
(2, 3, 2, 6), 
(2, 4, 1, 6), 
(2, 4, 2, 6), 
(2, 5, 1, 6), 
(2, 5, 2, 6)] 
+1

私はdownvotedされていないが、それは彼が期待される結果として指定したものではありません! – MSeifert

+0

また、このような努力的な質問に回答を提供することを推奨しないでください。 – vaultah

+0

ありがとう、これは非常に近いですが、正確にはありません。私は各略語が特定の出力リストに対して同じになるように数字を必要とします。つまり、1つのリストには1と2の両方または3と4の両方が含まれるべきではありません。これは出力リストの数の半分になるはずです。 help @Μseifertにもう一度感謝します –

関連する問題