Python 我可以通过setdefault设置默认值吗

Python 我可以通过setdefault设置默认值吗,python,Python,如果我在dict上设置了一个默认值,那么在它被覆盖后是否有可能恢复默认值 像这样: dd = {} dd.setdefault('beverage':'A nice cup of tea') ... dd['beverage'] = 'Yellow urine' ... if dd['beverage'] not in list_of_valid_beverages: # If the beverage has been contaminated revert to default.

如果我在dict上设置了一个默认值,那么在它被覆盖后是否有可能恢复默认值

像这样:

dd = {}
dd.setdefault('beverage':'A nice cup of tea')
...
dd['beverage'] = 'Yellow urine'
...
if dd['beverage'] not in list_of_valid_beverages:
    # If the beverage has been contaminated revert to default.
    # Something like any of the following?
    dd['beverage'] = dd.getdefault('beverage')
    dd['beverage'].clear()
    del dd['beverage']
...
print dd['beverage']
我的猜测是,这是不可能与一个普通的口述。一个声明

dd[“饮料”]=“黄尿”

一旦被处决,茶就永远失去了。但这将是一个很好的功能:-)


有人对此有更深入的了解吗?

不,不可能。所有
setdefault
所做的都是以下逻辑:

if key not in the_dict:
    the_dict[key] = value
return the_dict[key]
它不会专门处理“默认”值,并且不会将其存储在您要覆盖的位置以外的任何位置


如果您想要一组持久的默认值,最好只保留一个单独的默认值。所有
setdefault
所做的都是以下逻辑:

if key not in the_dict:
    the_dict[key] = value
return the_dict[key]
它不会专门处理“默认”值,并且不会将其存储在您要覆盖的位置以外的任何位置


如果您想要一组持久的默认值,最好只保留一个单独的默认值
dict

值得注意的是,您可以对
defaultdict
进行子类化,并覆盖
\uu missing\uu
函数,因此,您可以获得一个新类,该类可以记住何时调用
\uuuuu missing\uuuu
,并保存新构造的默认值。值得注意的是,您可以将
defaultdict
子类化,并覆盖
\uuu missing\uuu
函数,这样,您就可以得到一个新类,它可以记住何时调用
\uuuu missing\uuuu
,并保存新构造的默认值。