我怎样才能在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'})