如何创建新的 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