Python字典设置键值后,能否访问该键此前的get方法默认值?
Python字典赋值后能否获取之前get()的默认值?
原生Python字典无法直接实现这个需求,因为get(key, default)方法里的default参数只是当键不存在时临时返回的数值,字典本身不会存储这个默认值。当你后续给该键赋值后,没有任何内置机制能追溯之前使用get()时传入的默认值。
如果需要实现这个功能,你可以自定义一个字典子类,在调用get()时自动记录首次传入的默认值:
class DefaultTrackingDict(dict): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._recorded_defaults = {} def get(self, key, default=None): # 仅当键不存在且未记录过默认值时,保存当前default if key not in self and key not in self._recorded_defaults: self._recorded_defaults[key] = default return super().get(key, default) def get_original_default(self, key): # 返回该键之前get()时设置的默认值,不存在则返回None return self._recorded_defaults.get(key) # 测试示例 mydict = DefaultTrackingDict({'a': 1, 'b': 2}) print(mydict.get('c', 3)) # 输出 3 mydict['c'] = 10 print(mydict.get_original_default('c')) # 输出 3
这个子类通过重写get()方法,在首次为不存在的键指定默认值时,将该值存入内部的_recorded_defaults字典。后续通过get_original_default()方法就能获取到对应键之前设置的默认值。
内容的提问来源于stack exchange,提问作者Michael C.
相关产品推荐
相关产品推荐

