相关疑难解决方法(0)

Python 类型:类型字典或 defaultdict 扩展类

我有一段旧的 python 代码,用于解析格式严格的文本文件(存储用于本地化的字符串)。由于结构是分层的,并且某些元素可能存在也可能不存在,因此程序使用嵌套的defaultdicts 来表示它。就像是:

terms = defaultdict(lambda: defaultdict(str)) # dict<key, dict<lang, translation>>
Run Code Online (Sandbox Code Playgroud)

因为这些字典没有类型化(因为它们的成员可以是任何类型)并且因为它们是嵌套的,并且因为我需要向该层次结构添加另一个级别,所以我决定向该程序添加类型化:

from typing import Tuple, Dict, Set, List, NewType

Key = NewType('Key', str)
Lang = NewType('Lang', str)
Translation = NewType('Translation', str)
PLIndex = NewType('PLIndex', int)
Run Code Online (Sandbox Code Playgroud)

但是,我终生无法弄清楚如何重写terms =上面的行以defaultdict输入那些嵌套的s。

我最终做的只是基本上包装dict到我的类型中,这看起来不太好:

class Forms:
    def __init__(self):
        self.dct: Dict[PLIndex, Translation] = {}

    def __getitem__(self, item: PLIndex) -> Translation:
        return self.dct[item]

    def __setitem__(self, key: PLIndex, value: Translation) -> None:
        self.dct[key] = value


class Translations:
    def __init__(self): …
Run Code Online (Sandbox Code Playgroud)

python types type-hinting

6
推荐指数
1
解决办法
2428
查看次数

标签 统计

python ×1

type-hinting ×1

types ×1