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

嵌套字典与字典列表校验:定位输入字典中的非法键

字典键结构校验实现

需求概述

给定结构模板main和待校验数据input_data,需递归校验input_data中所有层级的键(包括嵌套字典、列表内的字典),确保每个键都能在main对应层级找到匹配项,最终返回所有不匹配的错误键。

示例中input_data里的'rol'是错误键,因为main对应位置的正确键是'role',所以输出为['rol']。

代码实现

def find_invalid_keys(main, input_data):
    invalid_keys = []
    
    # 处理字典类型的层级
    if isinstance(main, dict) and isinstance(input_data, dict):
        # 遍历input的所有键,检查是否在main的键中
        for key in input_data.keys():
            if key not in main:
                invalid_keys.append(key)
            else:
                # 递归检查嵌套结构
                invalid_keys.extend(find_invalid_keys(main[key], input_data[key]))
    # 处理列表类型的层级,逐个元素对应校验
    elif isinstance(main, list) and isinstance(input_data, list):
        # 取两个列表的最小长度,对应位置校验
        for m_item, i_item in zip(main, input_data):
            invalid_keys.extend(find_invalid_keys(m_item, i_item))
    
    return invalid_keys

# 修正示例中的语法错误(原示例的main和input_data写法有误,改为正确的字典格式)
main = {
    "app": [
        {
            "name": str,
            "info": [
                {
                    "role": str,
                    "scope": {"groups": list}
                }
            ]
        },
        {
            "name": str,
            "info": [
                {"role": str}
            ]
        }
    ]
}

input_data = {
    "app": [
        {
            'name': 'nms',
            'info': [
                {
                    'role': 'user',
                    'scope': {'groups': ['xyz']}
                }
            ]
        },
        {
            'name': 'abc', 
            'info': [
                {'rol': 'user'}
            ]
        }
    ]
}

# 执行校验并输出结果
print(find_invalid_keys(main, input_data))

代码说明

  1. 递归遍历:通过递归处理嵌套的字典和列表,覆盖所有层级的键校验。
  2. 字典校验:遍历待校验字典的每个键,若不在模板字典的键集合中,标记为错误键;否则继续递归校验嵌套结构。
  3. 列表校验:将模板列表和待校验列表的对应元素逐一配对,递归校验每个元素的结构。
  4. 语法修正:原示例中的main和input_data写法存在语法错误,已修正为标准Python字典格式。

运行上述代码,输出结果为['rol'],符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:15:56