Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PyCharm中文本类型检查错误的Python列表(对于具有文本键的dict相同)_Python_Pycharm_Mypy - Fatal编程技术网

PyCharm中文本类型检查错误的Python列表(对于具有文本键的dict相同)

PyCharm中文本类型检查错误的Python列表(对于具有文本键的dict相同),python,pycharm,mypy,Python,Pycharm,Mypy,我想在Python中使用文字类型提示的优点,但似乎文字不能正确识别为dict键或列表: from typing import Literal, Dict, List T = Literal['foo', 'bar'] L = List[T] D = Dict[T, int] q: T = 'foo' # ok l: L = ['foo', 'bar'] # Expected type 'List[Literal['foo', 'bar']]', got 'List[str]' inste

我想在Python中使用文字类型提示的优点,但似乎文字不能正确识别为dict键或列表:

from typing import Literal, Dict, List

T = Literal['foo', 'bar']
L = List[T]
D = Dict[T, int]

q: T = 'foo'  # ok
l: L = ['foo', 'bar']  # Expected type 'List[Literal['foo', 'bar']]', got 'List[str]' instead 
d: D = {'foo': 1}  # Expected type 'Dict[Literal['foo', 'bar'], int]', got 'Dict[str, int]' instead

如何在列表中或作为dict键正确使用文本类型?

我认为您的示例程序类型检查与mypy中相同。例如,请参见。对于Pycharm,请看——这似乎是他们这边已知的一个bug。bug报告中的评论建议做一些类似于
l=cast(l,['foo','bar'])
的黑客行为作为解决方法。(如果您不使用mypy,只想询问pycharm中的类型提示,那么使用“python类型”或“类型提示”可能比使用“mypy”更好。)