2017-05-08 2 views
2

辞書のタプルで指定された範囲から、この辞書のすべての可能な組み合わせを作成するにはどうすればよいですか?各値の範囲を使用して辞書からすべての可能な組み合わせを取得する方法

def createCombo(self): 
    usedAtoms = {'C':(0,100),'H':(0,200),'O':(0,4),'N':(0,4),'S':(0,4)} 

    MolecularFormula.combinations(self, usedAtoms) 

def combinations(self,dicts): 

    product = [x for x in apply(itertools.product, dicts.values())] 
    print [dict(zip(dicts.keys(), p)) for p in product] 
+0

。 –

+0

@AlexHallあなたは 'product ='の部分を意味しますか? –

+0

@IanDimitriはい、または 'usedAtoms'の定義にあります。 –

答えて

1

applyは今、例えば、引数のリストを展開するために*を使用pythonで廃止されました

apply(itertools.product, dicts.values()) 

dicts.values()を置き換える、あなたの問題のために

itertools.product(*dicts.values()) 

次のようになります。ただ、各ペアに `range`機能を使用し、あなたはほとんどそこにいる

[range(*pair) for pair in dicts.values()] 
+0

AH!完璧に働いた!それは私がそれを動的にしなければならないより良いincaseです!どうもありがとうございます –

関連する問題