[英]Dictionary: Revert/remove setdefault
我目前有一個傳遞給回調函數的對象,該對象是字典,必須返回。
調用obj.setdefault("Server", "Something")
在字典上稱為obj.setdefault("Server", "Something")
,因此即使鍵/值對不存在,調用程序也具有默認值。
如何還原/刪除該setdefault
(刪除默認值)? 我的意思是我只是不想在dict中使用該鍵/值對,並且如果鍵不退出,它似乎沒有復雜性,但是由於默認值,它總是被添加。
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
{}
假設在傳遞給回調dict.setdefault
時該值不在字典中, dict.setdefault
並不是真正的問題-此操作是可用於更改python字典的眾多操作之一。 特別是,它確保為給定的密鑰存儲了一些東西,無論如何都可以使用索引分配直接完成。 只要您的代碼和調用者都維護對同一詞典的引用,您別無選擇,只能信任調用者(以及該詞典的所有其他引用持有者)。
字典的可變性是問題所在,因此可能的解決方案圍繞設計中的余地。 我只能想到:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.