丰满:在dicts中验证dicts

时间:2018-01-31 16:34:36

标签: python validation dictionary voluptuous

我想验证以下YAML文件定义的defaultdict包含两个名为dictdev的{​​{1}}。

sha

使用 !!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。我想验证这两个词组中的dictssha标记是否真的url(以后可能会进行更多验证。)

我可以创建一个额外的架构

str

但有更优雅的方式吗?

1 个答案:

答案 0 :(得分:1)

原来一个答案是将 repo_schema = Schema({"sha":str,"url":str}) snapshot_schema = Schema({"dictitems":dict,"dev":repo_schema, "shared":repo_schema}) 放入snapshot_schema=Schema({"dictitems":dict, "dev":{"sha":str,"url":str}, "shared":{"sha":str,"url":str})

{{1}}

我猜你也可以这样做:

{{1}}