Python中是否存在类似dict.get但返回默认键值的内置函数?
回答
嘿,好问题!首先得明确:Python标准库里的普通dict并没有内置你想要的这种get2方法——也就是当指定键找不到时,自动返回另一个键对应的值,而不是固定的默认值。
不过有几种简洁好用的替代方案,完全能满足你的需求:
直接嵌套
dict.get():这就是你已经想到的方式,简单直接还易读:a = {1:2, 3:4, 5:6} result = a.get(7, a.get(5)) # 返回6,因为7不存在,取a[5]的值要是担心默认键(比如例子里的5)也不存在,还能给内层
get再加个兜底的默认值:a.get(7, a.get(5, 0)),这样就算5也不在字典里,会返回0(或者你指定的其他值)。自定义字典子类:如果需要频繁用这个逻辑,不如自己写个字典子类,把这个功能封装成方法:
class DefaultKeyDict(dict): def get_with_default_key(self, target_key, fallback_key): return self.get(target_key, self.get(fallback_key)) a = DefaultKeyDict({1:2, 3:4, 5:6}) print(a.get_with_default_key(7, 5)) # 输出6这种方式比直接修改内置
dict类更安全,不会影响其他地方的字典使用。独立工具函数:要是不想搞子类,写个小函数也很方便:
def get_with_fallback_key(dictionary, target_key, fallback_key): return dictionary.get(target_key, dictionary.get(fallback_key)) a = {1:2, 3:4, 5:6} print(get_with_fallback_key(a, 7, 5)) # 输出6
总结一下,虽然没有现成的内置方法,但这些替代方案都挺优雅的——临时用的话嵌套get就够了,频繁用就封装成方法或函数,完全能解决你的问题~
内容的提问来源于stack exchange,提问作者MattS
相关产品推荐
相关产品推荐

