python - 在 Python 3.8 中键入 TypedDict 的键、值,无需附加类

标签 python python-typing

我想使用 Python 3.8 中的 Typing 模块。 Python 3.8 在 Typing 模块中提供了 TypedDict。 我有一个带有这样的参数的函数: 从打字导入

def groupDataFrame(df: pd.DataFrame, somelist: List[str], somedict: TypedDict[str: Callable]:
    pass

但它不允许我像这样指定字典,抛出 TypeError: TypeError:“_TypedDictMeta”对象不可订阅

有一个解决方案利用额外的类,但这是一个相当丑陋的解决方案:

How to get key type from pythons TypedDict

知道如何在没有额外类(class)的情况下做到这一点吗?

最佳答案

你不能为 TypedDict 添加下标;你打算实例化或子类化 according to the docs :

Point2D = TypedDict('Point2D', x=int, y=int, label=str)
Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str})

考虑到这一点,您可以将其内联到签名中:

def x(a: TypedDict('A', x=int)):
  pass

关于python - 在 Python 3.8 中键入 TypedDict 的键、值,无需附加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63050806/

相关文章:

python - 如何在 for 循环中注释类型?

python - 当属性初始化为 None 然后稍后使用时出现 Mypy 错误

python - 如何在Python脚本中更改外部命令的目标目录

Python cx_Oracle 缺少 SELECT 关键字

python - PySNMP 查询接口(interface)的选择列表

python - 如何在Python中用空值初始化一个对象?

python - 回归分类报告(sklearn)

python - 以编程方式从共享邮箱发送 outlook 电子邮件

python - 如何输入 float 和/或整数的numpy数组

python - TypeVar 和 NewType 有什么区别?