我有一个简单的代码片段,我将字典值设置为空列表:
new_dict = {}
for i in range(1, 13):
new_dict[i] = []
现在,如果在下一行的循环中键入 new_dict[i]
并添加一个点,我希望 PyCharm 向我显示可用于 list< 的方法列表
,但 PyCharm 在这种简单情况下无法识别字典值类型:
为什么会这样,我该怎么办?使用 PyCharm 2016.1.2、Python 2.7.10。
作为解决方法,我可以显式添加 type hint ,通过添加 # type: dict[int, list]
内联注释让 PyCharm 知道 new_dict
是一个字典,其中键是整数,值是列表:
最佳答案
我认为您期望 PyCharm 能够从代码中推断出太多信息。
提供类型提示注释可为 PyCharm 提供显示代码完成选项所需的信息。在这种情况下,您明确告诉 PyCharm 每个字典元素的值将是什么类型。
如果没有类型提示注释,您期望 PyCharm 能够知道当您在循环内分配字典的元素值时它的值。对于 PyCharm 来说,这是太多的假设了。正如 Tadhg McDonald-Jensen 在评论中提到的那样,对于 PyCharm 来说,这种情况过于动态,无法可靠地解决。代码完成会经常出错。
关于python - PyCharm 不识别字典值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37010854/