从字典中删除一个元素

2172 投票
20 回答
2708498 浏览
提问于 2025-04-16 16:43

我该如何在Python中从字典中删除一个项目?

在不改变原始字典的情况下,我该如何获得一个去掉该项目的新字典?


另外,您可以查看 如何从Python字典中删除一个键?,了解如何处理可能不存在的项目(通过键)的问题。

20 个回答

117

我觉得你的解决方案是最好的方法。不过,如果你想要另一种方法,可以创建一个新的字典,使用旧字典里的键,但不包括你指定的那个键,像这样:

>>> a
{0: 'zero', 1: 'one', 2: 'two', 3: 'three'}
>>> {i:a[i] for i in a if i!=0}
{1: 'one', 2: 'two', 3: 'three'}
515

pop 是用来修改字典的。

 >>> lol = {"hello": "gdbye"}
 >>> lol.pop("hello")
     'gdbye'
 >>> lol
     {}

如果你想保留原来的字典,可以直接复制一份。

2506

del语句可以用来删除字典中的一个元素:

del d[key]

需要注意的是,这个操作会直接改变原来的字典内容,所以如果其他地方也在使用这个字典,内容也会跟着改变。如果你想要得到一个新的字典,可以先复制一份字典:

def removekey(d, key):
    r = dict(d)
    del r[key]
    return r

dict()构造函数会创建一个浅拷贝。如果你想要创建一个深拷贝,可以查看一下copy模块的相关内容。


要注意的是,每次对字典进行del、赋值等操作时都复制一份,会让你的操作从常数时间变成线性时间,同时也会占用更多的空间。对于小字典来说,这不是问题。但如果你打算频繁复制大型字典,可能需要考虑使用其他的数据结构,比如HAMT(可以参考这个回答)。

撰写回答