3 回答

森林海
TA贡献2011条经验 获得超2个赞
该del语句删除了一个元素:
del d[key]
但是,这会改变现有字典,因此字典的内容会针对具有对同一实例的引用的任何其他人进行更改。要返回新字典,请复制字典:
def removekey(d, key):
r = dict(d)
del r[key]
return r
该dict()构造使得浅拷贝。要进行深层复制,请参阅该copy模块。
请注意,为每个字典del/作业/等制作副本。意味着你从恒定时间到线性时间,也使用线性空间。对于小的dicts,这不是问题。但是如果你打算制作大量的dicts副本,你可能想要一个不同的数据结构,比如HAMT(如本答案所述)。

回首忆惘然
TA贡献1847条经验 获得超11个赞
pop 改变字典。
>>>lol = {"hello":"gdbye"}
>>>lol.pop("hello")
'gdbye'
>>> lol
{}
如果你想保留原件,你可以复制它。

largeQ
TA贡献2039条经验 获得超7个赞
我认为您的解决方案是最好的方法。但是如果你想要另一个解决方案,你可以使用旧词典中的键创建一个新词典而不包括你指定的键,如下所示:
>>> 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'}
添加回答
举报
0/150
提交
取消