所以我正在研究如何键入从设备返回的大型JSON对象。我在Python 3.8中找到了TypedDict
类型,并认为它很酷。
但是后来我开始钻研嵌套词典的兔子洞,不确定是否有更好的方法。
问题:有没有一种使用类符号定义嵌套类型的Dicts的方法?
我有以下字典
object = {
'name': 'My Name',
'somekey': {
'subkey1': 1,
'subkey2': {
'subsubkey1': 2,
'subsubkey2': 'nested'
}
}
}
我导入以下库
from typing import TypedDict
使用作业批注我可以提出这个建议,但是它很难看而且很难读。
MyObjAssignmentNotation = TypedDict('Obj', {'name': str, 'somekey': TypedDict('SubObj_1', {'subkey1': int, 'subkey2': TypedDict(
'SubObj_2', {'subsubkey1': int, 'subsubkey2': str})})}
使用我想出的类表示法,但是类型都是分开的,并且由于必须从下往上阅读,因此不容易读取组合类型。
class SubObj_Layer2(TypedDict):
subsubkey1: int
subsubkey2: str
class SubObj_Layer1(TypedDict):
subkey1: int
subkey2: SubObj_Layer2
class MyObjClassNotation(TypedDict):
name: str
somekey: SubObj_Layer1
然后我有了一些创造力,将两者放在一起,虽然稍微好点,但幅度不大。
class MyObjClassAndAssignmentNotation(TypedDict):
name: str
somekey: TypedDict('SubObj_1', {'subkey1': int, 'subkey2': TypedDict(
'SubObj_2', {'subsubkey1': int, 'subsubkey2': str})})
关于改进上述语法的任何建议吗?