Ответ 1
Вот как я это сделал, и он работает:
dictlist = [dict() for x in range(n)]
Он дает вам список n пустых словарей.
У меня есть словарь следующим образом:
{'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}
Но, конечно, он не работает. Может ли кто-нибудь дать мне подсказку? Благодарю.
Вот как я это сделал, и он работает:
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 генерирует исключение, когда вы пытаетесь изменить элемент, которого там нет. Я считаю, что вы хотите:
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!
поскольку он создает список ссылок на тот же пустой словарь, поэтому, если вы обновляете один словарь в списке, все остальные ссылки также обновляются.
Попробуйте эти обновления, чтобы увидеть разницу:
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'})