开发者问题收集

从字典中删除元素

2011-04-30
2753857

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

在不修改原始字典的情况下,如何获取另一个已删除项目的字典?


另请参阅 如何从 Python 字典中删除键? ,了解有关删除可能尚不存在的项目(按键)的具体问题。

3个回答

del 语句 删除一个元素:

del d[key]

请注意,这会改变现有字典,因此对于引用同一实例的任何其他人,字典的内容都会发生变化。要返回 字典,请复制该字典:

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

dict() 构造函数会进行 浅拷贝 。要进行深层复制,请参阅 copy 模块


请注意,为每个字典 del /assignment/etc 进行复制意味着您将从恒定时间变为线性时间,并且还使用线性空间。对于小型字典,这不是问题。但如果您打算复制大量大型字典,您可能需要不同的数据结构,例如 HAMT(如 此答案 中所述)。

Greg Hewgill
2011-04-30

pop 改变字典。

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

如果您想保留原始内容,您可以复制它。

Crystal
2014-03-21

我认为您的解决方案是最好的方法。但如果您想要另一种解决方案,您可以使用旧字典中的键创建一个新字典,而不包含您指定的键,如下所示:

>>> 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'}
utdemir
2011-04-30