Mypy 在使用 union 进行映射时抛出错误

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

我有字典:

example: dict[str, Union[str, int]] = {"foo": 1, "bar": "baz"}

值是字符串和整数。当我尝试使用其中的值时,我肯定知道从特定键中获取的数据类型。但 mypy 不知道值,我想使用的是字符串或整数。

例如,我想将 int 值与另一个 int 进行比较

res: bool = example["foo"] > 1

我理解为什么 mypy 说“不支持 >(“str”和“int”)的操作数类型”,但我想忽略这个错误。我能做些什么? 我认为任何类型都不是最好的解决方案。也许我可以配置 mypy 来忽略这个错误?

抱歉我的英语不好,谢谢)

python mypy typing
1个回答
0
投票

如果字典每次都有相同的键,您可以使用

TypedDict

from typing import TypedDict

class ExampleType(TypedDict):
    foo: int
    bar: str


example: ExampleType = {'foo': 1, 'bar': 'baz'}
res: bool = example['foo'] > 1
© www.soinside.com 2019 - 2024. All rights reserved.