如何定义一个有约束的字典?(验证字典)



我想用一组键定义一个嵌套字典,这样

  1. 不能添加新键,即字典的结构保持不变
  2. 键不能为空,即summary的键不应该为空,同样,items中存储的项目列表不应该为空

我想制作的字典:

{
summary: {
amount:
date:
phone_number:
}
# items is a list of dictionary there is no limit in the number of items but 
# there has to be at least one item present
# each key in item should have a value
items: [   
{
id:
desc:
quantity:
total:  
},
{
id:
desc:
quantity:
total:  
},
{
id:
desc:
quantity:
total:  
}
]
}

你们能给我一些建议,我应该采取什么方法来实现这个目标,我该怎么做?

您所描述的听起来像是模式包的完美用例。从自述文件激励使用:

>>> from schema import Schema, And, Use, Optional, SchemaError
>>> schema = Schema([{'name': And(str, len),
...                   'age':  And(Use(int), lambda n: 18 <= n <= 99),
...                   Optional('gender'): And(str, Use(str.lower),
...                                           lambda s: s in ('squid', 'kid'))}])
>>> data = [{'name': 'Sue', 'age': '28', 'gender': 'Squid'},
...         {'name': 'Sam', 'age': '42'},
...         {'name': 'Sacha', 'age': '20', 'gender': 'KID'}]
>>> validated = schema.validate(data)
>>> assert validated == [{'name': 'Sue', 'age': 28, 'gender': 'squid'},
...                      {'name': 'Sam', 'age': 42},
...                      {'name': 'Sacha', 'age' : 20, 'gender': 'kid'}]

最新更新