如何创建新的 typing.Dict[str,str] 并向其中添加项目
How to create a new typing.Dict[str,str] and add items to it
在 python 中有一个很棒的 Q/A here already 用于创建 非类型化 字典。我正在努力弄清楚如何创建 typed 字典,然后向其中添加内容。
我正在尝试做的一个例子是...
return_value = Dict[str,str]
for item in some_other_list:
if item.property1 > 9:
return_value.update(item.name, "d'oh")
return return_value
...但这让我得到了 descriptor 'update' requires a 'dict' object but received a 'str'
的错误
我已经尝试了上述声明的一些其他排列
return_value:Dict[str,str] = None
错误 'NoneType' object has no attribute 'update'
。并尝试
return_value:Dict[str,str] = dict()
或
return_value:Dict[str,str] = {}
update expected at most 1 arguments, got 2
均出错。我不知道这里需要什么来创建一个空类型的字典,就像我在 c# (var d = new Dictionary<string, string>();
) 中那样。如果可能的话,我宁愿不回避类型安全。有人可以指出我遗漏了什么或做错了什么吗?
Dict
之类的内容不适合在运行时使用;它们是表示用于静态类型分析的类型的对象。如果你想要一个字典,你必须使用
return_value = dict()
您不能使用 Dict
创建具有受限运行时类型的对象。
最后两个是 Dict
的正确用法,但是你在 for 循环中用不正确的语法更新了字典。
return_value: Dict[str, str] = dict()
for item in some_other_list:
if item.property1 > 9:
return_value[item.name] = "d'oh"
return return_value
在 python 中有一个很棒的 Q/A here already 用于创建 非类型化 字典。我正在努力弄清楚如何创建 typed 字典,然后向其中添加内容。
我正在尝试做的一个例子是...
return_value = Dict[str,str]
for item in some_other_list:
if item.property1 > 9:
return_value.update(item.name, "d'oh")
return return_value
...但这让我得到了 descriptor 'update' requires a 'dict' object but received a 'str'
我已经尝试了上述声明的一些其他排列
return_value:Dict[str,str] = None
错误 'NoneType' object has no attribute 'update'
。并尝试
return_value:Dict[str,str] = dict()
或
return_value:Dict[str,str] = {}
update expected at most 1 arguments, got 2
均出错。我不知道这里需要什么来创建一个空类型的字典,就像我在 c# (var d = new Dictionary<string, string>();
) 中那样。如果可能的话,我宁愿不回避类型安全。有人可以指出我遗漏了什么或做错了什么吗?
Dict
之类的内容不适合在运行时使用;它们是表示用于静态类型分析的类型的对象。如果你想要一个字典,你必须使用
return_value = dict()
您不能使用 Dict
创建具有受限运行时类型的对象。
最后两个是 Dict
的正确用法,但是你在 for 循环中用不正确的语法更新了字典。
return_value: Dict[str, str] = dict()
for item in some_other_list:
if item.property1 > 9:
return_value[item.name] = "d'oh"
return return_value