在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]
)。
如果有一种方法可以表示该字典是常量/只读,以便语言服务器可以推断有关键/值的更多信息,我同意。
关于你的最后一点
如果有一种方法可以表示该字典是常量/只读,以便语言服务器可以推断有关键/值的更多信息,我同意。
typing.Final
会有所帮助?
from typing import Dict, Final
DICT1: Final[Dict[str, int]] = {
'a': 1,
'b': 2,
'c': 3
}
请注意,这严格来说是一个类型注释,并且不会在运行时强制执行。