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

私の推測では、これは通常の辞書では不可能です。ワンズステートメント

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 に答える