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

如何高效编写嵌套字典非空判断与子值校验的精简代码?

优化嵌套字典的条件判断代码

嘿,我来帮你把这段嵌套字典的判断代码改得更简洁易读!

你原来的代码需要先检查父字典的键是否存在,再校验子键的值,现在可以通过链式调用get()方法把两个条件整合成一个condition_x,同时完美处理父键不存在的情况:

方法一:链式get()(兼容所有Python版本)

这种方法最简洁,利用get()的默认值参数,当父键不存在时返回空字典,避免了KeyError,同时直接完成值的校验:

parent_dict = {'parent_key': {'child_key': 'child_value'}}

# 整合后的condition_x
condition_x = parent_dict.get('parent_key', {}).get('child_key') == 'value_1'

if condition_x:
    print('Value detected')
  • 原理:第一个get('parent_key', {})如果找不到parent_key,就返回空字典{};
  • 接着第二个get('child_key')从空字典取值会返回None,None == 'value_1'结果为False,正好符合“父键不存在时不执行打印”的需求;
  • 要是父键存在,就会正常取出子键的值和'value_1'比较,满足条件就触发打印。

方法二:Python 3.10+ 用match-case(更直观的结构匹配)

如果你用的是Python 3.10及以上版本,还可以用match-case语法直接匹配字典结构,可读性拉满:

parent_dict = {'parent_key': {'child_key': 'child_value'}}

match parent_dict.get('parent_key'):
    case {'child_key': 'value_1'}:
        print('Value detected')
    case _:
        pass  # 其他情况什么都不做

这种写法直接“描述”了我们要匹配的结构,一眼就能看懂逻辑。

额外说明(如果需要父键不存在时返回None)

如果你的需求是让condition_x在父键不存在时返回None,而不是False,可以稍微调整:

condition_x = parent_dict.get('parent_key', {}).get('child_key') if 'parent_key' in parent_dict else None

if condition_x == 'value_1':
    print('Value detected')

不过通常第一种方法已经能满足大部分场景,更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:05:55