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

Добавьте элемент в каждый словарь списка (понимание списка)

У меня есть список словарей и хочу добавить ключ для каждого элемента этого списка. Я пробовал:

result = [ item.update({"elem":"value"}) for item in mylist ]

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

result = [ item["elem"]="value" for item in mylist ]

возвращает синтаксическую ошибку.

4b9b3361

Ответ 1

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

 for item in mylist:
    item.update( {"elem":"value"})

Ответ 2

Если вы хотите использовать понимание списка, здесь есть отличный ответ: fooobar.com/questions/442263/...

В вашем случае это будет так:

result = [dict(item, **{'elem':'value'}) for item in myList]

Например:.

myList = [{'a': 'A'}, {'b': 'B'}, {'c': 'C', 'cc': 'CC'}]

Затем используйте либо

result = [dict(item, **{'elem':'value'}) for item in myList]

или

result = [dict(item, elem='value') for item in myList]

Наконец,

>>> result
[{'a': 'A', 'elem': 'value'},
 {'b': 'B', 'elem': 'value'},
 {'c': 'C', 'cc': 'CC', 'elem': 'value'}]

Ответ 3

>>> a = [ { 1:1 }, {2:2}, {3:3} ]
>>> for item in a:
...     item.update( { "test": "test" } )
... 
>>> a
[{'test': 'test', 1: 1}, {'test': 'test', 2: 2}, {'test': 'test', 3: 3}]

Вы неправильно используете понимание списка, вызов item.update возвращает значение None, и ваш вновь созданный список будет заполнен значениями None вместо ожидаемых значений dict.

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

Ответ 4

Либо не используйте понимание списка, либо верните новый dict на основе оригинального dict плюс новый ключ:

[dict(list(item.items()) + [("elem", "value")]) for item in mylist]

Ответ 5

Вы можете использовать карту.

result = map(lambda item: dict(item, elem='value'), myList)

Если у вас уже есть список лекций, вы можете сделать:

#elements = ['value'] * len(myList)
result = map(lambda item: dict(item[0], elem=item[1]),zip(myList,elements))

то у вас есть результаты