【问题标题】:python schema to have at least one keypython模式至少有一个键
【发布时间】:2018-01-02 22:08:35
【问题描述】:
我正在使用schema 库。
如何创建模式来验证字典中是否包含任何键和对应的值?
mydict_schema = Schema({
Optional('name'): str,
Optional('name_id'): int,
})
目前所有的键都是Optional,但我希望至少有一个。
【问题讨论】:
标签:
python
validation
dictionary
schema
associative-array
【解决方案1】:
上下文
用例
- DevSyedK 希望创建一个架构验证约束,该约束要求字典至少具有一组可能键中的一个键
- DevSyedK 当前有一个
ZeroOrMore 约束,但 DevSyedK 希望它是一个 OneOrMore 约束
解决方案
- 建立两个列表,一个列表包含所有可能的键,另一个列表包含要验证的数据中包含的实际键
- 创建一个模式约束,当且仅当两个列表的交集不为空时返回
True
演示代码
-
注意:这不是问题的完整解决方案,只是概念验证。
lstkeys_possible = ['alpha','bravo','charlie']
lstkeys_actual = [] ## 不会验证
lstkeys_actual = ['zulu'] ## 不会验证
lstkeys_actual = ['alpha'] ## 将验证
Schema( lambda vinput: bool(set(vinput[0]) & set(vinput[1])) ).validate( [lstkeys_possible,lstkeys_actual] )
另见