说我有一个dicts列表:
ls = [{'id': 1, 'a1': 2, 'a2': 3}, {'id':2, 'a2':4}, {'id':3, 'a2':5}]
Run Code Online (Sandbox Code Playgroud)
a1某些词汇中不存在的地方
我想设置a1为0,在这些类型的字典,其中a1缺失和更改密钥名称a1,以b1在所有类型的字典.这是我提出的代码
for l in ls:
l.setdefault('a1', 0)
l['b1'] = l.pop('a1')
Run Code Online (Sandbox Code Playgroud)
我想知道是否有可能提高效率,因为我需要运行这段代码数百万次.任何改进将不胜感激.
这是一个小小的改进,利用了一个事实,dict.pop()如果键不在字典中,可以将参数作为默认值返回:
ls = [{'id': 1, 'a1': 2, 'a2': 3}, {'id':2, 'a2':4}, {'id':3, 'a2':5}]
for d in ls:
d['b1'] = d.pop('a1', 0)
>>> ls
[{'a2': 3, 'id': 1, 'b1': 2}, {'a2': 4, 'id': 2, 'b1': 0}, {'a2': 5, 'id': 3, 'b1': 0}]
Run Code Online (Sandbox Code Playgroud)