Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python字典中删除键/值对?_Python_Dictionary_Key Value - Fatal编程技术网

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

如何在python字典中删除键/值对?,python,dictionary,key-value,Python,Dictionary,Key Value,假设我有一本这样的字典: d = {'ben' : 10, 'kim' : 20, 'bob' : 9} if (d.get('bob', None) == 9): d.pop('bob') 有没有办法从字典中删除像('bob',9)这样的一对? 我已经知道了d.pop('bob'),但即使值不是9,也会删除该对 现在我唯一能想到的办法是这样的: d = {'ben' : 10, 'kim' : 20, 'bob' : 9} if (d.get('bob', None) == 9)

假设我有一本这样的字典:

d = {'ben' : 10, 'kim' : 20, 'bob' : 9}
if (d.get('bob', None) == 9):
    d.pop('bob')
有没有办法从字典中删除像
('bob',9)
这样的一对? 我已经知道了
d.pop('bob')
,但即使值不是
9
,也会删除该对

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

d = {'ben' : 10, 'kim' : 20, 'bob' : 9}
if (d.get('bob', None) == 9):
    d.pop('bob')

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

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) 您想测试条件d['bob']==9。 2) 如果第一个答案为true,则希望删除键和值

因此,我们不能完全忽略需要使用if的测试部分。但我们当然可以在一条线上做到这一点


d、 如果d.get('bob')==9,则弹出('bob'),否则无。。。这就是方法…如果d.get('bob')==9:那么可以删除默认的
None
。。。从技术上讲,如果d.get('bob')==9:del d['bob']也可以在一行中编写
,因此我不确定除了使用
if
/` else使语言复杂化之外还有什么其他原因?