字典:恢复/删除setdefault

lle*_*led 2 python dictionary python-3.x

我目前有一个传递给我的回调的对象,这是一个字典,我必须返回.

调用者调用obj.setdefault("Server", "Something")字典,即使键/值对不存在,它也有默认值.

如何恢复/删除setdefault(删除默认值)?我的意思是我根本不想在dict中使用键/值对,并且如果键不退出它似乎没有复杂性,但是由于默认值它总是被添加.

sna*_*ile 5

setdefault方法将Server键的值设置为Something(只要Server键不在字典中).您只需Server从字典中删除密钥即可:

if 'Server' in obj: del obj['Server']
Run Code Online (Sandbox Code Playgroud)

如果您不希望在其值不同时删除服务器密钥Something,请执行以下操作:

if obj['Server'] == 'Something': del obj['Server']
Run Code Online (Sandbox Code Playgroud)

但是,您无法判断值Server是作为默认值添加到字典中还是作为键值对的普通设置添加.那是因为在调用之后setdefault,字典保存了键值对,而没有任何关于它是如何添加的指示.

示范:

>>>d = {}
>>>d.setdefault("Server", "Something")
>>>d
{'Server': 'Something'}
>>>del d['Server']
>>>d
{}
Run Code Online (Sandbox Code Playgroud)