我现在有一个对象传递给我的回调,这是一个字典,我必须返回它。
调用者在字典中调用obj.setdefault("Server", "Something"),这样即使键/值对不存在,它也有一个默认值。
如何恢复/删除该setdefault (删除默认值)?我的意思是,我只是不想在dict中使用那个键/值对,如果键不退出,它似乎没有什么复杂之处,但是由于默认情况,它总是被添加的。
发布于 2016-08-06 20:31:08
setdefault方法将Server键的值设置为Something (只要Server键尚未在字典中)。您只需从字典中删除Server键:
if 'Server' in obj: del obj['Server']如果不希望删除与Something不同的服务器密钥,请执行以下操作:
if obj['Server'] == 'Something': del obj['Server']但是,您无法判断Server的值是作为默认值添加到字典中,还是作为键值对的普通设置添加到字典中。这是因为在调用setdefault之后,字典保存键值对,而不指明它是如何添加的。
示范:
>>>d = {}
>>>d.setdefault("Server", "Something")
>>>d
{'Server': 'Something'}
>>>del d['Server']
>>>d
{}发布于 2016-08-06 20:26:14
假设值在传递给回调时不在字典中,那么dict.setdefault并不是真正的问题--这个操作是可用于更改python字典的许多操作之一。具体来说,它确保为给定的密钥存储一些东西,无论如何,这都可以通过索引分配直接完成。只要您的代码和调用方都维护对同一词典的引用,您就没有真正的选择,只能信任调用者(以及其他所有对此字典的引用持有者)。
字典的易变性是问题所在,因此可能的解决方案围绕着设计中的回旋余地。我只能想到:
https://stackoverflow.com/questions/38808229
复制相似问题