假设我有一个听写列表:
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')
我想知道是否可以提高它的效率,因为我需要将这段代码运行数百万次。如有任何改进,我们将不胜感激。
请您参考如下方法:
这里有一点改进,它利用了 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}]
