You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:17:40