1

如果我在字典上设置默认值,是否可以在覆盖后恢复默认值?

像这样:

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']

我的猜测是,这对于普通的 dict 是不可能的。那些声明

dd['饮料'] = '黄色尿液'

被处决,茶就永远消失了。但这将是一个不错的功能:-)

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

4

1 回答 1

4

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

if key not in the_dict:
    the_dict[key] = value
return the_dict[key]

它不会特别处理“默认”值,并且不会将其存储在您要覆盖的位置以外的任何地方。

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

于 2012-10-15T07:13:09.107 回答