如何获取常量字典的键作为文字字符串的并集

问题描述 投票:0回答:1

在Python中,有没有办法以字符串文字的联合形式获取常量字典的键?

在 TypeScript 中,我可以将只读/const 对象上可能的键推断为文字的联合。

const obj1 = {
  a: 1,
  b: 2,
  c: 3,
} as const;

type Keys = keyof typeof obj1;
//  "a" | "b" | "c"

如果我想在 Python 中做类似的事情,我会这样做

from typing import Literal, Dict

Keys = Literal['a', 'b', 'c']
DICT1: Dict[Keys, int] = {
    'a': 1,
    'b': 2,
    'c': 3
}

有没有办法从

Keys
推断
DICT1
,而不必自己定义它?如果我有一个包含 10 多个条目的字典,就会变得乏味。我不想将键写入两次(一次在字典中,一次在文字/枚举中。)我还没有看到一个不涉及写入数据两次或丢失类型信息的解决方案(即:
 Dict[str, int]
)。

如果有一种方法可以表示该字典是常量/只读,以便语言服务器可以推断有关键/值的更多信息,我同意。

python mypy pyright
1个回答
0
投票

关于你的最后一点

如果有一种方法可以表示该字典是常量/只读,以便语言服务器可以推断有关键/值的更多信息,我同意。

也许

typing.Final
会有所帮助?

from typing import Dict, Final

DICT1: Final[Dict[str, int]] = {
    'a': 1,
    'b': 2,
    'c': 3
}

请注意,这严格来说是一个类型注释,并且不会在运行时强制执行。

© www.soinside.com 2019 - 2024. All rights reserved.