Подтвердить что ты не робот

Как создать массив/список словарей в 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}

Но, конечно, он не работает. Может ли кто-нибудь дать мне подсказку? Благодарю.

4b9b3361

Ответ 1

Вот как я это сделал, и он работает:

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

Он дает вам список n пустых словарей.

Ответ 2

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

Ответ 3

Используйте

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

Ответ 4

Я предполагаю, что motifWidth содержит целое число.

В Python списки не изменяют размер, если вы не скажете им. Следовательно, Python генерирует исключение, когда вы пытаетесь изменить элемент, которого там нет. Я считаю, что вы хотите:

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

Для чего стоит, задавая вопросы в будущем, это помогло бы, если бы вы включили трассировку стека, показывающую ошибку, которую вы получаете, а не просто говорите "она не работает". Это поможет нам прямо понять причину проблемы, а не пытаться решить ее из вашего кода.

Надеюсь, что это поможет!

Ответ 5

Незначительное изменение ответа user1850980 (для вопроса "Как инициализировать список пустых словарей" ) с помощью конструктора списка:

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

Я узнал, к моему огорчению, это НЕ работает:

dictlistFAIL = [{}] * listsize  # FAIL!

поскольку он создает список ссылок на тот же пустой словарь, поэтому, если вы обновляете один словарь в списке, все остальные ссылки также обновляются.

Попробуйте эти обновления, чтобы увидеть разницу:

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

(Я действительно искал user1850980 ответ на заданный вопрос, поэтому его/ее ответ был полезным.)

Ответ 6

Словарь:

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