0

我有一个看起来像这样的数据结构,它name是一个不能是某些值的任意字符串(src

 {
  'name' : 'stringvalue',
  'src'  : 'who cares this is wrong'
 }

我希望 cerberus 检查键是否不是srcor alsoBad,但我看到的所有模式示例似乎都要求我指定给定名称的格式。

我试过这个:

 def check_data(type_data):
    val = cerberus.Validator()
    val.allow_unknown={'forbidden' : ['src','alsoBad']}

    val.validate(type_data,{})

认为空模式会导致allow_unknown工作。但这并没有发现问题。

然后我尝试了:

 def check_data(type_data):
    val = cerberus.Validator()
    val.allow_unknown=

    val.validate(type_data,{'any_field':{'forbidden' : ['src','alsoBad']}})

但这也未能抓住问题。

当它们可能是任何东西时,如何检查字典中的第一级键?

4

1 回答 1

0

我已经下注并使用代码完成了它:

def check_data(type_data):
     bad_field=set(['src','alsoBad']) & set(type_data.keys())
     if bad_field:
          raise ValueError(f'Cannot have field {bad_field}'
于 2018-04-04T19:28:20.560 回答