Python 加载YAML文件后添加类型提示的正确方法是什么?
我正在向Python代码中添加类型提示,并且想知道在加载的YAML文件中键入提示的正确方法是什么,因为它是一个包含任意数量字典的字典 有没有比Dict[str,Dict[str,Any]]更好的方法键入提示返回加载的YAML文件 下面是函数:Python 加载YAML文件后添加类型提示的正确方法是什么?,python,python-3.x,typing,Python,Python 3.x,Typing,我正在向Python代码中添加类型提示,并且想知道在加载的YAML文件中键入提示的正确方法是什么,因为它是一个包含任意数量字典的字典 有没有比Dict[str,Dict[str,Any]]更好的方法键入提示返回加载的YAML文件 下面是函数: def load_yaml(yaml_in: str) -> Dict[str, Dict[str, Any]]: return yaml.load(open(yaml_in), Loader=yaml.FullLoader) 下面是加载Y
def load_yaml(yaml_in: str) -> Dict[str, Dict[str, Any]]:
return yaml.load(open(yaml_in), Loader=yaml.FullLoader)
下面是加载YAML文件的示例:
VariableMap:
var1: 'time'
var2: 'param_name'
GlobalVariables:
limits:
x-min:
x-max:
y-min:
y-max:
Plots:
plot1:
file:
x_data: 'date'
y_data: [{param: 'param1', label: "param1", color: 'red', linestyle: '-'},
{param: 'param2', label: "param2", color: 'black', linestyle: '--'}]
labels:
title: {label: 'title', fontsize: '9'}
x-axis: {xlabel: 'x-label', fontsize: '9'}
y-axis: {ylabel: 'y-label', fontsize: '9'}
limits:
x-min: 0
x-max: 100
y-min:
y-max:
Figures:
fig1:
shape: [1, 1]
size: [6, 8]
plots: ['plot1']
可能是一个没有答案的重复问题:您提供的链接与我的问题类似。对那个问题的评论使我想到了()。在阅读完注释后,似乎没有一种好的方法可以键入嵌套字典。您可能希望使用TypedDicts(请参阅和)来精确键入字典,或者使用类似的库来验证任意dicts并将其反序列化为预定义类。我自己更喜欢使用pydantic:这两种方法都需要同样的努力,因为它们都需要您定义一个“模式”,但至少pydantic负责为您验证输入。(续)使用这两种方法,嵌套dict都非常简单:只需为每个要精确键入的嵌套dict定义一个新的TypedDict或类,并在父类型中重用该类型。但是,如果你想要真正任意的Dict,而你对值或键名不作任何假设,那么最好的选择可能是
Dict[str,Dict[str,Any]
或Dict[str,Dict[str,object]]
。可能是一个没有答案的重复问题:你提供的链接与我的问题类似。对那个问题的评论使我想到了()。在阅读完注释后,似乎没有一种好的方法可以键入嵌套字典。您可能希望使用TypedDicts(请参阅和)来精确键入字典,或者使用类似的库来验证任意dicts并将其反序列化为预定义类。我自己更喜欢使用pydantic:这两种方法都需要同样的努力,因为它们都需要您定义一个“模式”,但至少pydantic负责为您验证输入。(续)使用这两种方法,嵌套dict都非常简单:只需为每个要精确键入的嵌套dict定义一个新的TypedDict或类,并在父类型中重用该类型。但是,如果您想要真正任意的Dict,而您对值或键名不作任何假设,那么您最好选择Dict[str,Dict[str,Any]
或Dict[str,Dict[str,object]]
。