我想验证以下YAML文件定义的defaultdict
包含两个名为dict
和dev
的{{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
。我想验证这两个词组中的dicts
和sha
标记是否真的url
(以后可能会进行更多验证。)
我可以创建一个额外的架构
str
但有更优雅的方式吗?
答案 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}}