从字典中删除一个元素
我该如何在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(可以参考这个回答)。