次のような辞書があります。
{'A':0,'C':0,'G':0,'T':0}
次のように、多くの辞書を含む配列を作成します。
[{'A':0,'C':0,'G':0,'T':0},{'A':0,'C':0,'G':0,'T':0},{'A':0,'C':0,'G':0,'T':0},...]
これは私のコードです:
weightMatrix = []
for k in range(motifWidth):
weightMatrix[k] = {'A':0,'C':0,'G':0,'T':0}
しかし、もちろん機能していません。誰かが私にヒントを与えることができますか?ありがとう。
これは私がそれをやった方法であり、動作します:
dictlist = [dict() for x in range(n)]
N個の空の辞書のリストが表示されます。
weightMatrix = [{'A':0,'C':0,'G':0,'T':0} for k in range(motifWidth)]
つかいます
weightMatrix = []
for k in range(motifWidth):
weightMatrix.append({'A':0,'C':0,'G':0,'T':0})
リストコンストラクターを使用したuser1850980の回答(「空の辞書のリストを初期化する方法」の質問)のマイナーバリエーション:
dictlistGOOD = list( {} for i in xrange(listsize) )
私は悔しさを知りましたが、これはうまくいきません:
dictlistFAIL = [{}] * listsize # FAIL!
same empty辞書への参照のリストを作成するため、リスト内の1つの辞書を更新すると、他のすべての参照も更新されます。
これらの更新を試して、違いを確認してください。
dictlistGOOD[0]["key"] = "value"
dictlistFAIL[0]["key"] = "value"
(私は実際に尋ねられた質問に対するuser1850980の答えを探していたので、彼/彼女の答えは役に立ちました。)
motifWidth
には整数が含まれると仮定します。
Pythonでは、指示がない限り、リストのサイズは変更されません。したがって、Pythonは、存在しない要素を変更しようとすると例外をスローします。
weightMatrix = []
for k in range(motifWidth):
weightMatrix.append({'A':0,'C':0,'G':0,'T':0})
価値があることについては、将来質問するときに、「機能していません」と言うだけでなく、発生しているエラーを示すスタックトレースを含めると役立ちます。これは、コードから問題を解決しようとするのではなく、問題の原因を直接把握するのに役立ちます。
お役に立てば幸いです!
これを試して:
lst = []
##use append to add items to the list.
lst.append({'A':0,'C':0,'G':0,'T':0})
lst.append({'A':1,'C':1,'G':1,'T':1})
##if u need to add n no of items to the list, use range with append:
for i in range(n):
lst.append({'A':0,'C':0,'G':0,'T':0})
print lst