如果我在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'] ='黄尿'
对此有更深入了解的人?
答案 0 :(得分:4)
不,这是不可能的。所有setdefault
都遵循以下逻辑:
if key not in the_dict:
the_dict[key] = value
return the_dict[key]
它不会特别处理“默认”值,也不会将其存储在您要覆盖的位置以外的任何位置。
如果你想要一组持久性默认值,那么最好只保留一个dict
个默认值。