如果不存在,请向dict添加密钥,然后重命名此密钥

时间:2016-02-25 05:05:21

标签: python dictionary

说我有一个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')

我想知道是否有可能提高效率,因为我需要运行这段代码数百万次。任何改进都将受到赞赏。

1 个答案:

答案 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}]