Python 嵌套字典的验证';s值类型

Python 嵌套字典的验证';s值类型,python,marshmallow,Python,Marshmallow,我检查棉花糖中的python数据,food字段是一个列表,该列表存储dict。我只能执行这一步。事实上,我想验证dict中的值是否为int,而不是string。我应该如何修改我的代码 来自棉花糖导入模式,字段,pprint 类UserSchema(模式): name=fields.Str() 食物=字段.列表(字段.目录) 用户数据={ “姓名”:“肯”, “食物”:[{‘苹果’:2,‘香蕉’:4},{‘苹果’:‘2’,‘香蕉’:‘4’}] } 结果=UserSchema().load(用户数据

我检查棉花糖中的python数据,
food
字段是一个列表,该列表存储dict。我只能执行这一步。事实上,我想验证dict中的值是否为
int
,而不是
string
。我应该如何修改我的代码

来自棉花糖导入模式,字段,pprint
类UserSchema(模式):
name=fields.Str()
食物=字段.列表(字段.目录)
用户数据={
“姓名”:“肯”,
“食物”:[{‘苹果’:2,‘香蕉’:4},{‘苹果’:‘2’,‘香蕉’:‘4’}]
}
结果=UserSchema().load(用户数据)
pprint(结果)

在函数中检查此代码:

print(type(var_name)) 

尝试像这样迭代并检查每个值类型

DictList = [{'apple': 2, 'banana': 4}, {'apple': '2', 'banana': '4'}]

user_data = {
    "name": "Ken",
    "food": DictList
}



def verify():
    for i in DictList:
        for k in i:
            if type(i[k]) == int:
                return True
            return False




if verify():
    result = UserSchema().load(user_data)
    pprint(result)

下面的代码应该验证您的数据模式。
看看代码中的注释,这是简单的解释

从marshmallow导入ValidationError、模式、字段、pprint添加了“ValidationError”。
用户数据={
“姓名”:“肯”,
“食物”:[
{‘苹果’:2,‘香蕉’:4},
{'apple':'2','banana':'4'}
]
}#“用户数据”保持不变。
#用于验证字典的新函数。
def验证值类型(dict):
对于输入dict:
如果类型(dict[key])不是int:
raise ValidationError(f'Type of{key}的值不是整数')
#`UserSchema`类,但有更改。
类UserSchema(模式):
name=fields.Str()
food=fields.List(fields.Dict(validate=validate_value_type))添加了验证功能。
#将'load'包装在'try/catch'中。
尝试:
UserSchema().load(用户数据)
除ValidationError作为错误外:
pprint(错误消息)
以上代码输出:

{'food': {1: ["Type of apple's value is not Integer"]}}

在您的回答中,您没有使用的所有功能