Python中多层字典键判断与字符串拼接优化

学习笔记作者:admin日期:2025-07-08点击:21

摘要:本文介绍了在Python中处理嵌套字典时,如何简洁地判断键是否存在,并对字符串拼接逻辑进行了优化。包括使用海象运算符、三元表达式以及函数封装等方法,提升代码可读性和效率。

1. 多层字典键判断

      在处理嵌套字典时,判断键是否存在是常见的需求。以下是几种推荐的方法:

1.1 使用 dict.get() 多层嵌套

if msg.get('modelInfo', {}).get('display_model_name') is not None:
    # 表示两个键都存在,并且 display_model_name 有值
    pass

1.2 自定义 deep_get 函数

def deep_get(d, *keys):
    for key in keys:
        if isinstance(d, dict) and key in d:
            d = d[key]
        else:
            return None
    return d

1.3 使用第三方库 dpath

import dpath.util

try:
    value = dpath.util.get(msg, "modelInfo/display_model_name")
    # 存在
except (KeyError, dpath.exceptions.PathNotFoundError):
    # 不存在

2. 字符串拼接优化

      在将变量拼接到字符串中时,若变量可能为 None,需要避免输出 None

2.1 使用 or 设置默认值

modelInfo = deep_get(msg, 'modelInfo', 'display_model_name') or "未知模型"
markdown_content += f"### {role} ({timestamp}  {modelInfo})\n\n"

2.2 使用三元表达式

modelInfo = deep_get(msg, 'modelInfo', 'display_model_name')
model_name = modelInfo if modelInfo is not None else "未知模型"
markdown_content += f"### {role} ({timestamp}  {model_name})\n\n"

2.3 使用海象运算符简化逻辑

if thought := json_path_get(item, 'thought'):
    markdown_content += f"- {thought}\n"

3. 总结

  • 使用 dict.get() 或自定义 deep_get 可以安全地访问嵌套字典。
  • 对于字符串拼接,可以使用 or 或三元表达式来避免显示 None
  • 使用海象运算符可以简化赋值和条件判断的逻辑。

上一篇      下一篇