Python中多层字典键判断与字符串拼接优化
学习笔记作者:admin日期:2025-07-08点击:151
摘要:本文介绍了在Python中处理嵌套字典时,如何简洁地判断键是否存在,并对字符串拼接逻辑进行了优化。包括使用海象运算符、三元表达式以及函数封装等方法,提升代码可读性和效率。
1. 多层字典键判断
在处理嵌套字典时,判断键是否存在是常见的需求。以下是几种推荐的方法:
1.1 使用 dict.get() 多层嵌套
if msg.get('modelInfo', {}).get('display_model_name') is not None:
    # 表示两个键都存在,并且 display_model_name 有值
    pass1.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 d1.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。
- 使用海象运算符可以简化赋值和条件判断的逻辑。