说我有一个dicts列表:
ls = [{'id': 1, 'a1': 2, 'a2': 3}, {'id':2, 'a2':4}, {'id':3, 'a2':5}]
某些词组中不存在a1
我希望在缺少a1
的这些词组中将a1
设置为0,并在所有词组中将键名a1
更改为b1
。这是我提出的代码
for l in ls:
l.setdefault('a1', 0)
l['b1'] = l.pop('a1')
我想知道是否有可能提高效率,因为我需要运行这段代码数百万次。任何改进都将受到赞赏。
答案 0 :(得分:6)
这是一个小小的改进,利用了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}]