如何创建一个新的typeing.Dict [str,str]并向其中添加项目

时间:2019-04-19 01:06:50

标签: python dictionary strong-typing

有很棒的Q/A here already用于在python中创建 untyped 字典。我正在努力弄清楚如何创建 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
{p {1}}错误。并尝试

'NoneType' object has no attribute 'update'

return_value:Dict[str,str] = dict() 

两个错误return_value:Dict[str,str] = {} 。我不知道要像在c#(update expected at most 1 arguments, got 2)中那样创建空类型字典需要什么。如果可能,我宁愿不避开类型安全性。有人可以指出我的缺失或做错了吗?

2 个答案:

答案 0 :(得分:3)

诸如Dict之类的内容不打算在运行时使用;它们是代表用于静态类型分析的类型的对象。如果要听写,必须使用

return_value = dict()

您不能使用Dict创建具有受限运行时类型的对象。

答案 1 :(得分:1)

最后2个是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