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

Python Cerberus如何定义允许任意顶级键的字典校验规则?

Cerberus 动态键字典校验方案

可以实现对应校验,Cerberus 内置的 keysrules 配置就是专门处理「顶级键不固定、所有值遵循相同结构」这类场景的。

注:你给出的示例存在语法笔误,Python 中方括号 [] 是列表结构,无法直接存放键值对,我们默认你指的是值为固定结构的字典(即方括号改为花括号 {}),如果实际是其他结构,调整 keysrules 下的校验规则即可。

示例校验代码

from cerberus import Validator

# 定义校验规则
schema = {
    # keysrules 会作用于字典下所有顶级键的对应值
    "keysrules": {
        "type": "dict",
        # 定义值的固定结构
        "schema": {
            "key1": {"type": "string", "required": True},
            "key2": {"type": "string", "required": True}
        }
    }
}

validator = Validator(schema)

# 校验符合要求的字典
valid_data = {
    "rand_value": {"key1": "val1", "key2": "val2"},
    "another_rand_value": {"key1": "val1", "key2": "val2"}
}
print(validator.validate(valid_data))  # 输出 True

# 校验不符合要求的字典(某值缺失key2)
invalid_data = {
    "rand_value": {"key1": "val1"},
    "another_rand_value": {"key1": "val1", "key2": "val2"}
}
print(validator.validate(invalid_data))  # 输出 False
print(validator.errors)  # 输出对应错误信息:{'rand_value': [{'key2': ['required field']}]}

如果你的值结构不是字典,只需要修改 keysrules 下的规则即可,不需要调整顶级键的匹配逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:24:00