我可以获取setdefault设置的默认值

时间:2012-10-15 07:11:47

标签: 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.
    # Something like any of the following?
    dd['beverage'] = dd.getdefault('beverage')
    dd['beverage'].clear()
    del dd['beverage']
...
print dd['beverage']

我的猜测是普通字典不可能这样做。声明

  

dd ['drink'] ='黄尿'

执行茶是永远失去的。但这将是一个很好的功能: - )

对此有更深入了解的人?

1 个答案:

答案 0 :(得分:4)

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

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

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

如果你想要一组持久性默认值,那么最好只保留一个dict个默认值。