如何在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使语言复杂化之外还有什么其他原因?