[英]Append to all dictionaries in a list
我有一个列表all
。 其中有许多字典。 我必须将一个键值datetime
附加到所有它们。
这是我的方法:
all = [{'name': "sadness", 'class': 'A1'},
{'name': 'joy', 'class': 'B1'},
{'name': 'mark', 'class': 'C1'}]
import datetime
for d in all:
d['datetime'] = datetime.datetime.now()
print all
还有另一种方法可以更快地做到这一点吗?
如果您希望所有字典的时间保持一致,请使用
a = [{'name':"sadness",'calss':'A1'},{'name':'joy','class':'B1'},{'name':'mark','class':'C1'}]
import datetime
c={'datetime':datetime.datetime.now()}
for d in a:
d.update(c)
print a
由于您的数据本质上是表格形式的,因此可以使用pandas.DataFrame
:
import pandas as pd
df = pd.DataFrame(all)
df['datetime'] = datetime.datetime.now()
print df
如果您选择将其保留为字典列表,那么我很遗憾您的循环是实现该目标的唯一方法。
另外,在python中, all
是一个好的变量名。
时机
对于1M元素的较大列表,假设您首先将数据存储在数据帧中,则速度提高了8倍!
N = 1000000
all = [ {'a': 'a%s'%i, 'b':i} for i in range(N) ]
df = pd.DataFrame(all)
%timeit df['datetime'] = datetime.datetime.now()
100 loops, best of 3: 6.38 ms per loop
%timeit for d in all: d['datetime'] = now
10 loops, best of 3: 46.7 ms per loop
或者,重复调用now():
%timeit for d in all: d['datetime'] = datetime.datetime.now()
1 loops, best of 3: 597 ms per loop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.