将相同的键值附加到字典列表

时间:2019-10-30 15:20:47

标签: python python-3.x list dictionary vectorization

我有一个字典列表,我想将相同的键值附加到所有字典上。 例如:

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 个答案:

答案 0 :(得分:3)

我只会使用for循环。

但是,本着真正回答所问问题的精神,您可以使用 map()以C速度运行隐式的for循环:

>>> 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