Добавить то же значение ключа в список диктов - PullRequest
2 голосов
/ 30 октября 2019

У меня есть список dict, и я хочу добавить одно и то же значение ключа ко всем dict. Например:

l = [
    {'name' : 'abc', 'age' : '20', 'city' : 'abc'},
    {'name' : 'def', 'age' : '20', 'city' : 'def'},
    {'name' : 'hij', 'age' : '20', 'city' : 'hij'},
    {'name' : 'klm', 'age' : '20', 'city' : 'klm'},
    {'name' : 'nop', 'age' : '20', 'city' : 'nop'}
    ]

for d in l:
    d['date'] = '30/10/2019'

вывод:

{'name': 'abc', 'age': '20', 'city': 'abc', 'date': '30/10/2019'}
{'name': 'def', 'age': '20', 'city': 'def', 'date': '30/10/2019'}
{'name': 'hij', 'age': '20', 'city': 'hij', 'date': '30/10/2019'}
{'name': 'klm', 'age': '20', 'city': 'klm', 'date': '30/10/2019'}
{'name': 'nop', 'age': '20', 'city': 'nop', 'date': '30/10/2019'}

Так что это работает, но в моем реальном случае у меня есть больше значений (2000 диктов с 40 ключами). И я хочу знать, есть ли способ добавить дату к каждому диктовку без for.

1 Ответ

3 голосов
/ 30 октября 2019

Я бы просто использовал цикл for.

Тем не менее, в духе реального ответа на вопрос, который задали, вы могли бы использовать map () для запуска неявного цикла forна скорости C:

>>> from itertools import repeat
>>> from collections import deque
>>> from operator import setitem

>>> _ = deque(map(setitem, l, repeat('date'), repeat('30/10/2019')), maxlen=0)

>>> from pprint import pprint
>>> pprint(l)
[{'age': '20', 'city': 'abc', 'date': '30/10/2019', 'name': 'abc'},
 {'age': '20', 'city': 'def', 'date': '30/10/2019', 'name': 'def'},
 {'age': '20', 'city': 'hij', 'date': '30/10/2019', 'name': 'hij'},
 {'age': '20', 'city': 'klm', 'date': '30/10/2019', 'name': 'klm'},
 {'age': '20', 'city': 'nop', 'date': '30/10/2019', 'name': 'nop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...