如何在python字典中删除键/值对?

时间:2018-12-02 18:38:29

标签: python dictionary key-value pop

说我有一本这样的字典:

const Knex = require('knex');
const { host, user, password, database, port } = require('settings')
const knex = Knex({
  client: 'pg',
  connection: { host, user, password, database, port },
  pool: { min: 0, max: 200 }
});

是否可以从字典中删除像Knex.raw(sql, args)这样的词对? 我已经知道d = {'ben' : 10, 'kim' : 20, 'bob' : 9} 了,但是即使值不是('bob',9)之外的那对也将删除。

现在我唯一能想到的就是这样:

d.pop('bob')

但是有更简单的方法吗?可能根本不使用

2 个答案:

答案 0 :(得分:4)

pop还会返回该值,因此从性能角度(可能忽略不计)和从可读性角度来看,最好使用del

除此之外,我认为您可以做些更简单/更好的事情。

from timeit import Timer


def _del():
    d = {'a': 1}
    del d['a']


def _pop():
    d = {'a': 1}
    d.pop('a')

print(min(Timer(_del).repeat(5000, 5000)))
# 0.0005624240000000613
print(min(Timer(_pop).repeat(5000, 5000)))
# 0.0007729860000003086

答案 1 :(得分:0)

您要在此处执行两项操作

1)您要测试条件d ['bob'] == 9。 2)如果第一个答案为真,则要删除键和值。

因此,我们不能省略测试部分,该部分完全需要使用if。但是我们当然可以一站式完成。

d.pop('bob'),如果d.get('bob')== 9否则