在Python中,至少有两种方法可以使用键从dict中删除项目。
d = {"keyA": 123, "keyB": 456, "keyC": 789}
#remove via pop
d.pop("keyA")
#remove via del
del d["keyB"]
两种方法都会从dict中删除该项。
我想知道我应该使用哪些方法以及为什么。还有,哪个更pythonic?
答案 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秒内运行。