python - 字典验证中至少有一个键?
问题描述
假设我想要一本字典,其中至少包含三个键foo', 'bar',
baz` 中的一个。以下将允许一个空集。
Schema({
'foo': str,
'bar': int,
'baz': bool
})
不幸的是,我不能这样做:
Any(
Schema({'foo': str}),
Schema({'bar': int}),
Schema({'baz': bool)
)
最好的方法是什么?
解决方案
至少具有三个键 foo'、'bar'、
baz
如何达到这一点:它已经在 github voluptuous项目中进行了描述。
解决方案(为您的示例采用):
from voluptuous import All, Any, Optional, Required, Schema
key_schema = Schema({
Required(
Any('foo', 'bar', 'baz'),
msg="Must specify at least one of ['foo', 'bar', 'baz']"): object
})
data_schema = Schema({
Optional('foo'): str,
Optional('bar'): int,
Optional('baz'): bool,
})
s = All(key_schema, data_schema)
因此,这s
是您可以在代码和测试中使用的最终模式。
推荐阅读
- javascript - 当您单击 jquery/javascript 中的另一个元素时,防止执行一个代码
- azure - 无法在服务器防火墙规则中添加我的客户端 IP
- java - 我要打印的数字在下一行不断增加
- javascript - 带有父参数的JS Reduce
- css - React:在屏幕上垂直居中 Bootstrap Container 组件
- java - 改变数组的多个值
- javascript - 如何将多个跨度包装到一个div中
- c++ - c++ 进程返回-1073741819 (0xC0000005)
- javascript - 赛普拉斯等待在一个循环中加载一个元素
- css - 如何删除或更改默认按钮样式?