【问题标题】:TypedDict when keys have invalid names键名无效时的 TypedDict
【发布时间】:2020-05-17 02:19:32
【问题描述】:

如果我的字典中有一个带有无效标识符的键,例如A(2)。如何使用此字段创建TypedDict

例如

from typing import TypedDict

class RandomAlphabet(TypedDict):
    A(2): str

不是有效的Python代码,导致错误:

SyntaxError: illegal target for annotation

保留关键字也有同样的问题:

class RandomAlphabet(TypedDict):
    return: str

抛出:

SyntaxError: invalid syntax

【问题讨论】:

    标签: python python-3.x dictionary typing


    【解决方案1】:

    根据PEP 589可以使用alternative syntax创建TypedDict,如下:

    Movie = TypedDict('Movie', {'name': str, 'year': int})

    所以,在你的情况下,你可以写:

    from typing import TypedDict
    
    RandomAlphabet = TypedDict('RandomAlphabet', {'A(2)': str})
    

    或者对于第二个例子:

    RandomAlphabet = TypedDict('RandomAlphabet', {'return': str})
    

    PEP 589 发出警告:

    这种语法不支持继承,但是没有办法 在单一类型中同时包含必填和非必填字段。这 这样做的动机是保持向后兼容的语法为 尽可能简单,同时涵盖最常见的用例。

    【讨论】:

    • 很高兴知道我在正确的路线上,但我真的希望有比这更好的方法 - 如果单个键中有连字符,则类语法会中断,这远非理想!我希望来自数据类的字段。
    猜你喜欢
    • 2021-08-31
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2020-11-12
    相关资源
    最近更新 更多