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

字典get方法遇None未返回默认值,如何一行代码实现需求?

解决方案

问题根源在于字典的get()方法仅在目标键不存在时才返回默认值;如果键存在但对应值为None,get()会直接返回None,导致后续调用.get("truc")时触发AttributeError(因为None对象没有get方法)。

可以用一行代码实现需求,核心思路是判断d.get("a")的结果是否为None,如果是则使用默认字典{},再继续取值:

(d.get("a") or {}).get("truc")

如果需要给"truc"设置默认返回值,只需在第二个get()中添加参数:

(d.get("a") or {}).get("truc", "默认值")

补充说明

  • or运算符在这里的作用是:当d.get("a")为None(或其他布尔值为False的对象,比如空字符串、0等)时,会返回{};如果d.get("a")是有效的字典,则直接使用该字典。
  • 如果需要严格仅在值为None时才使用默认字典(排除其他假值),可以改用三元表达式:
    (d.get("a") if d.get("a") is not None else {}).get("truc")
    

内容的提问来源于stack exchange,提问作者MathAng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:57:28