【发布时间】:2018-07-10 20:24:36
【问题描述】:
我想验证以下 YAML 文件定义了一个 defaultdict,其中包含两个名为 dev 和 sha 的 dicts。
!!python/object/apply:collections.defaultdict
args:
- !!python/name:builtins.dict ''
dictitems:
dev:
sha: 5b7
url: /path/to/here
shared:
sha: 58a
url: /path/to/there
使用yaml.load()(safe_load() 会导致创建构造函数的完全不同的问题,所以让我们把它放在一边。)给我这个数据结构:
defaultdict(<class 'dict'>, {'dev': {'sha': '5b7', 'url': '/path/to/here'},
'shared': {'sha': '58a', 'url': '/path/to/there'}})
我想验证这个数据结构,所以我创建了这个:
snapshot_schema = val.Schema({"dictitems":dict,"dev":dict,"shared":dict})
这成功验证了我有一个defaultdict,其中包含两个dicts。我想验证这两个字典中的sha 和url 标签真的是str(以后可能会进行更多验证。)
我可以创建一个额外的架构
new_schema = Schema({'sha':str, 'url':str})
new_schema(my_data['dev'])
new_schema(my_data['shared'])
但是有没有更优雅的方法呢?
【问题讨论】:
标签: python validation dictionary voluptuous