我有一本字典如下:
{'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}
但当然不行。有人能给我一个暗示吗?谢谢。
答案 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'})