如何在 python 中创建字典的数组/列表?

我有一本字典,内容如下:

{'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}

当然没用,谁能给我点提示吗? 谢谢。

205990 次浏览

使用

weightMatrix = []
for k in range(motifWidth):
weightMatrix.append({'A':0,'C':0,'G':0,'T':0})

我假设 motifWidth包含一个整数。

在 Python 中,列表不会更改大小,除非您告诉它们这样做。因此,当您试图更改不存在的元素时,Python 会抛出异常。我相信你想要:

weightMatrix = []
for k in range(motifWidth):
weightMatrix.append({'A':0,'C':0,'G':0,'T':0})

无论如何,在将来提出问题时,如果您包含显示正在获得的错误的堆栈跟踪,而不是仅仅说“它不工作”,将会有所帮助。这将帮助我们直接找出问题的原因,而不是试图从您的代码中找出问题所在。

希望能帮上忙!

weightMatrix = [{'A':0,'C':0,'G':0,'T':0} for k in range(motifWidth)]

我是这么做的,而且很有效:

dictlist = [dict() for x in range(n)]

它给出了 n 个空字典的列表。

字典:

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'})

对于 user1850980的回答(对于“如何初始化空字典列表”这个问题) ,使用列表构造函数有一些小小的变化:

dictlistGOOD = list( {} for i in xrange(listsize) )

我懊恼地发现,这并不奏效:

dictlistFAIL = [{}] * listsize  # FAIL!

因为它创建了一个对 一样空字典的引用列表,所以如果您更新列表中的一个字典,所有其他引用也会被更新。

试试这些更新,看看有什么不同:

dictlistGOOD[0]["key"] = "value"
dictlistFAIL[0]["key"] = "value"

(实际上我正在寻找 user1850980对问题的回答,所以他/她的回答是有帮助的。)

试试这个:

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