我想用一组键定义一个嵌套字典,这样
- 不能添加新键,即字典的结构保持不变
- 键不能为空,即
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'}]