我知道python list有一个remove()方法,它从列表中删除给定的对象。
aList = [123, 'xyz', 'zara', 'abc', 'xyz']
aList.remove('xyz')
我知道我们可以使用del语句通过offset来删除列表中的项目:
del aList[-1]
我也知道我们可以使用del语句通过键从字典中删除项目:
aDict = {'a':1, 'b':2 'c':3}
del aDict['a']
但是,字典没有remove()方法,我认为这很好:
aDict.remove('a')
我猜一个原因是 remove()不会为字典保存任何类型的 del 语句,因此没有必要。它是否正确?
对于列表,remove()将“按值搜索索引”和“按索引删除”组合在一起,因此必须在那里。这是对的吗?
有什么其他原因?
答案 0 :(得分:4)
如果你看这个问题:Difference between del, remove and pop on lists:你会注意到主答案指出
删除:删除匹配值的第一个 ,而不删除特定索引
del:删除特定索引
pop:返回已删除的元素
因此,使用词典时,它根本不需要删除方法,因为只能有一个键的实例(它们必须是唯一的)并且<script
type="text/javascript"
async defer
src="//assets.pinterest.com/js/pinit.js"
></script>
就足够了。
答案 1 :(得分:4)
请注意,list.remove
会做出非常严格的保证 - 删除值的第一次出现。现在,dict
中的排序是任意的 - 没有&#34;第一个&#34;。
答案 2 :(得分:3)
确实如此,它只是被称为pop
:
pop(键[,默认])
如果key在字典中,则将其删除并返回其值,否则返回default。如果没有给出default并且key不在字典中,则引发KeyError。
答案 3 :(得分:1)
词典有pop
,但不是remove
。为什么不?因为remove
找到第一个匹配值并将其删除,并且不返回任何内容。所以在字典中:
{'a': 5, 'b': 5}
dict.remove
应该删除值。如果我使用dict.remove(5)
,应删除哪个密钥?此外,这甚至不是非常有用的操作。如果您需要从字典中删除某个值,那么您使用了错误的数据结构。
dct.pop(key)
另一方面,与
不同value = dct[key]
del dct[key]
return value
这可以与pop
列表方法形成对比:
lst.pop(index)
类似于
value = lst[index]
del lst[index]
return value
也就是说,它们都使用相同的原理。