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

时间:2010-03-07 20:07:03

标签: python list arrays dictionary

我有一本字典如下:

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

但当然不行。有人能给我一个暗示吗?谢谢。

7 个答案:

答案 0 :(得分:51)

这就是我这样做的方式并且有效:

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

它为您提供了n个空字典列表。

答案 1 :(得分:28)

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

答案 2 :(得分:11)

使用

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

答案 3 :(得分:6)

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

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

我发现我的懊恼,这不起作用:

dictlistFAIL = [{}] * listsize  # FAIL!

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

尝试这些更新以查看差异:

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

(我实际上是在寻找用户1850980对所提问题的答案,所以他/她的答案很有帮助。)

答案 4 :(得分:4)

我假设motifWidth包含一个整数。

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

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

对于它的价值,在将来提问时,如果你包括显示你正在获得的错误的堆栈跟踪而不是仅仅说“它不工作”,那将会有所帮助。这将有助于我们直接找出问题的原因,而不是试图从代码中解决问题。

希望有所帮助!

答案 5 :(得分:2)

试试这个:

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

答案 6 :(得分:-3)

字典:

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