为什么dict没有删除方法?

时间:2016-07-06 13:03:33

标签: python

我知道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()将“按值搜索索引”和“按索引删除”组合在一起,因此必须在那里。这是对的吗?

有什么其他原因?

4 个答案:

答案 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

也就是说,它们都使用相同的原理。