如何使用包含连字符的键定义 TypedDict 类

Evy*_*vyn 5 python typing python-typing

如何创建一个 TypedDict 类,该类支持包含连字符或字符串中支持的其他字符的键,例如下面示例中的“justify-content”。

from typing import TypedDict, Literal
from typing_extensions import NotRequired

class Attributes(TypedDict):
    width: NotRequired[str]
    height: NotRequired[str]
    direction: NotRequired[Literal["row", "column"]]
    justify-content: NotRequired[Literal["start", "end", "center", "equally-spaced"]]
Run Code Online (Sandbox Code Playgroud)

Paw*_*bin 5

可以使用函数语法:

from typing import TypedDict, Literal
from typing_extensions import NotRequired


Attributes = TypedDict(
    "Attributes",
    {
        "width": NotRequired[
            str,
        ],
        "height": NotRequired[
            str,
        ],
        "direction": NotRequired[
            Literal["row", "column"],
        ],
        "justify-content": NotRequired[
            Literal["start", "end", "center", "equally-spaced"]
        ],
    },
)
Run Code Online (Sandbox Code Playgroud)

文档中提到了

当任何键不是有效标识符时,也应该使用函数语法,例如因为它们是关键字或包含连字符