协慌网

登录 贡献 社区

从字典中删除元素

有没有办法从 Python 中删除字典中的项目?

另外,如何从字典中删除项目以返回副本(即,不修改原始文件)?

答案

del语句删除一个元素:

del d[key]

但是,这会改变现有字典,因此字典的内容会针对具有对同一实例的引用的任何其他人进行更改。要返回字典,请复制字典:

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

dict()构造函数生成一个浅表副本 。要进行深层复制,请参阅copy模块


请注意,为每个 dict del / assignment / etc 制作副本。意味着你从恒定时间到线性时间,也使用线性空间。对于小的 dicts,这不是问题。但是如果你打算制作大量的 dicts 副本,你可能想要一个不同的数据结构,比如 HAMT(如本答案所述 )。

pop改变了字典。

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

如果你想保留原件,你可以复制它。

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

>>> 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'}