首页 > 解决方案 > 如何定义字典,其值显示什么类型应该是属性,哪个名称用作键?

问题描述

我正在开发应用程序,它应该验证 JSON。属性具有不同的类型(数字、字符串、日期),这就是为什么我不仅要验证属性的存在,还要验证它们的值是否属于所需的类型。

这就是为什么我想定义字典,哪个键是属性的名称,值是类型,这个属性应该是(使用运算符isinstance或以其他方式)。但我不知道如何在 Python 中实现这一点。像这样的东西:

map_of_property_to_classes: Dict[str, any]
class_name = map_of_property_to_classes["property_name"]
print(isinstance("property_name", class_name))

有人可以给个提示吗?

标签: pythonclassdictionary

解决方案


你在寻找类似下面的东西吗?

from typing import Dict


def validate(data: Dict, meta_data: Dict) -> None:
    for k, v in data.items():
        if isinstance(v, meta_data[k]):
            print('OK')
        else:
            print(f'{v} must be of type {meta_data[k]}')


_data = {'x': 12, 'name': 12}
_meta_data = {'x': int, 'name': str}
validate(_data,_meta_data)

输出

OK
12 must be of type <class 'str'>

推荐阅读