首页 > 解决方案 > 在 Python 3.8 中没有附加类的 TypedDict 的键入键、值

问题描述

我想在 Python 3.8 中使用 Typing 模块。Python 3.8 在 Typing 模块中有一个 TypedDict。我有一个带有这样参数的函数: from Typing import

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

但它不允许我像这样指定字典,抛出 TypeError: TypeError: '_TypedDictMeta' object is not subscriptable

有一个使用附加类的解决方案,但这是一个非常丑陋的解决方案:

如何从 pythons TypedDict 获取密钥类型

知道如何在没有额外课程的情况下做到这一点吗?

标签: pythonpython-typing

解决方案


你不能下标 TypedDict;您打算根据文档实例化或子类化一个:

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

推荐阅读