从dict中删除项目的最佳方法

时间:2011-04-19 07:50:46

标签: python

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

d = {"keyA": 123, "keyB": 456, "keyC": 789}

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

#remove via del
del d["keyB"]

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

我想知道我应该使用哪些方法以及为什么。还有,哪个更pythonic?

5 个答案:

答案 0 :(得分:60)

  • 如果您想要捕获已移除的项目,请使用d.pop,例如item = d.pop("keyA")

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

  • 如果要删除,如果密钥不在字典中,则禁止显示错误:if thekey in thedict: del thedict[thekey]

答案 1 :(得分:17)

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

  • 当您需要知道已删除密钥的值
  • 时,请使用pop
  • 另外使用del

答案 2 :(得分:2)

我想这归结为你是否需要退回已删除的项目。 pop返回已删除的项目,del没有。

答案 3 :(得分:2)

大多数时候,最有用的实际上是:

d.pop("keyC", None)

这会从字典中删除密钥,但不会引发KeyError(如果不存在)。

表达式还可以方便地返回键下的值;如果没有键,则返回None

答案 4 :(得分:1)

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

def del_er(nums,adict):
     for n in nums:
        del adict[n]
def pop_er(nums,adict):
     for n in nums:
        adict.pop(n)
     

在我的系统上,使用100,000项dict和75,000个随机选择的索引,del_er在大约0.330秒内运行,pop_er在大约.412秒内运行。

相关问题