在键未知时从字典中删除项
如何根据值来从字典中删除一个项目,也就是说,当你不知道这个项目的键时,最好的方法是什么呢?这里有一个简单的方法:
for key, item in some_dict.items():
if item is item_to_remove:
del some_dict[key]
有没有更好的方法呢?在遍历字典的时候直接删除项目有什么问题吗?
10 个回答
52
这段代码是用来处理某些数据的。它可能会涉及到一些循环、条件判断或者数据存储的操作。具体来说,代码块的内容会告诉我们如何一步一步地完成某个任务,通常是为了让计算机能够理解并执行我们想要的操作。
在编程中,我们经常需要用代码来告诉计算机该做什么,而这段代码就是一个例子。它可能会包含一些变量,这些变量就像是存放信息的小盒子,里面可以放数字、文字或者其他数据。通过这些变量,我们可以在代码中进行各种计算和操作。
总之,这段代码的目的是为了让计算机完成特定的工作,而我们通过编写代码来实现这个目标。
a = {'name': 'your_name','class': 4}
if 'name' in a: del a['name']
118
dict.pop(key[, default])
这个方法可以让你在知道键的情况下删除字典中的项目。如果成功删除了这个项目,它会返回这个键对应的值;如果没有找到这个键,它就会返回你传入的 default
值。详细信息可以查看 官方文档。
举个例子:
>>> dic = {'a':1, 'b':2}
>>> dic
{'a': 1, 'b': 2}
>>> dic.pop('c', 0)
0
>>> dic.pop('a', 0)
1
>>> dic
{'b': 2}
93
要注意的是,你现在正在检查对象的身份(is
只有在两个操作数在内存中是同一个对象时才会返回 True
- 这并不总是适用于用 ==
比较相等的两个对象)。如果你是故意这样做的,那么你可以把你的代码改成:
some_dict = {key: value for key, value in some_dict.items()
if value is not value_to_remove}
但是这样可能并不能达到你想要的效果:
>>> some_dict = {1: "Hello", 2: "Goodbye", 3: "You say yes", 4: "I say no"}
>>> value_to_remove = "You say yes"
>>> some_dict = {key: value for key, value in some_dict.items() if value is not value_to_remove}
>>> some_dict
{1: 'Hello', 2: 'Goodbye', 3: 'You say yes', 4: 'I say no'}
>>> some_dict = {key: value for key, value in some_dict.items() if value != value_to_remove}
>>> some_dict
{1: 'Hello', 2: 'Goodbye', 4: 'I say no'}
所以你可能想用 !=
来代替 is not
。