如何为字典变量设置python类型提示?

Dog*_*ath 18 python dictionary types

假设我有一个存储在变量“v”中的字典:

from typing import Dict

v = { 'height': 5, 'width':14, 'depth': 3 }

result = doSomething( v )

def doSomething( value:Dict[???] ):
    #do stuff
Run Code Online (Sandbox Code Playgroud)

如何在“doSomething”中声明字典类型?任何人的想法?非常感谢您的帮助 :)

Hun*_*ler 62

Python 3.9:

dict以与接受的答案相同的方法 使用小写字母。typing.Dict以及类似的大写通用类型,由于PEP 585 ,镜像内置函数已被弃用:

def my_func(value: dict[str, int]):
    pass
Run Code Online (Sandbox Code Playgroud)

  • 这很棒。`Dict` 和 `List` 很丑,让我想起了 Java。 (3认同)
  • @topher217 在 3.9+ 中不必输入 `fromtypes import Dict` 也很好。 (3认同)

che*_*ner 25

Dict需要两个“参数”,键的类型和值的类型。对于dict将字符串映射到整数的 a,请使用

def doSomething(value: Dict[str, int]):
Run Code Online (Sandbox Code Playgroud)

不过,文档可能会更明确一些。

  • 谢谢,Chepner,但是如果字典也有一个键,例如'name': 'Book',即一个字符串键和包含原始值的字符串值,我该怎么办? (2认同)
  • 然后您将不得不使用可以覆盖字符串或整数的联合类型。`Dict[str, Union[str, int]]`。 (2认同)
  • @soumeng78 如果你还没有注意到(并且可以利用),Python 3.9 使 `dict` 变得通用,所以 `dict[ErrorClass, float]` 现在可以工作。`Dict` 现已被弃用(尽管我不知道是否有实际删除它的时间表)。 (2认同)