关于python:从dict中删除项目的最佳方法

Best method to delete an item from a dict

在Python中,至少有两种方法可以使用键从dict中删除项。

1
2
3
4
5
6
7
d = {"keyA": 123,"keyB": 456,"keyC": 789}

#remove via pop
d.pop("keyA")

#remove via del
del d["keyB"]

这两种方法都会从dict中删除该项。

我想知道我应该使用哪种方法,为什么。另外,哪一个更像Python?


  • 如果您想捕获删除的项目,请使用d.pop,就像在item = d.pop("keyA")中一样。

  • 如果要从字典中删除项目,请使用del

  • 如果要删除,则在密钥不在字典中时抑制错误:if thekey in thedict: del thedict[thekey]


pop返回已删除密钥的值。基本上,d.pop(key)评估为x = d[key]; del d[key]; return x

  • 当需要知道已删除密钥的值时,使用pop
  • 否则使用del


我想归根结底是你是否需要归还被移除的物品。pop返回删除的项目,del不返回。


我用一个非常简单的计时器测试了这些功能的效率:

1
2
3
4
5
6
def del_er(nums,adict):
     for n in nums:
        del adict[n]
def pop_er(nums,adict):
     for n in nums:
        adict.pop(n)

On my system, using 100,000 item dict and 75,000 randomly selected indices, del_er ran in about .330 seconds, pop_er ran in about .412 seconds.