我怎样才能在Python中创build一个数组/列表的字典?
我有一本字典如下:
{'A':0,'C':0,'G':0,'T':0}
我想创build一个包含许多字典的数组,如下所示:
[{'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})
我假设motifWidth
包含一个整数。
在Python中,列表不会改变大小,除非你告诉他们。 因此,当您尝试更改不在那里的元素时,Python会引发exception。 我相信你想要:
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!
因为它创build了对同一个空字典的引用列表,所以如果更新列表中的一个字典,所有其他引用也会被更新。
尝试这些更新,看看不同之处:
dictlistGOOD[0]["key"] = "value" dictlistFAIL[0]["key"] = "value"
(我实际上是在寻找user1850980对问题的回答,所以他/她的回答是有帮助的。)
字典:
dict = {'a':'a','b':'b','c':'c'}
字典数组
arr = (dict,dict,dict) arr ({'a': 'a', 'c': 'c', 'b': 'b'}, {'a': 'a', 'c': 'c', 'b': 'b'}, {'a': 'a', 'c': 'c', 'b': 'b'})