python - PyCharm 不识别字典值类型

标签 python list dictionary pycharm type-hinting

我有一个简单的代码片段,我将字典值设置为空列表:

new_dict = {}
for i in range(1, 13):
    new_dict[i] = []

现在,如果在下一行的循环中键入 new_dict[i] 并添加一个点,我希望 PyCharm 向我显示可用于 list< 的方法列表,但 PyCharm 在这种简单情况下无法识别字典值类型:

enter image description here

为什么会这样,我该怎么办?使用 PyCharm 2016.1.2、Python 2.7.10。


作为解决方法,我可以显式添加 type hint ,通过添加 # type: dict[int, list] 内联注释让 PyC​​harm 知道 new_dict 是一个字典,其中键是整数,值是列表:

enter image description here

最佳答案

我认为您期望 PyCharm 能够从代码中推断出太多信息。

提供类型提示注释可为 PyCharm 提供显示代码完成选项所需的信息。在这种情况下,您明确告诉 PyCharm 每个字典元素的值将是什么类型。

如果没有类型提示注释,您期望 PyCharm 能够知道当您在循环内分配字典的元素值时它的值。对于 PyCharm 来说,这是太多的假设了。正如 Tadhg McDonald-Jensen 在评论中提到的那样,对于 PyCharm 来说,这种情况过于动态,无法可靠地解决。代码完成会经常出错。

关于python - PyCharm 不识别字典值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37010854/

相关文章:

python - args 的语义传递给 python threading.Thread __init__

python - 合并列表列失败

android - 在 Android 应用程序中显示台湾 map

Python:是否有使用多个键的优化字典类型(类似于数据库)?

c - 如何从两个给定大小为 20GB 的文件中搜索常用密码?

python - pandas 0.21.0 时间戳与 matplotlib 的兼容性问题

python - 如何向 bravado 创建的 API 客户端添加授权 header

python - 如何在pyplot极坐标中标记x轴超过8个点

string - 在 matplotlib 中绘制字符串列表

python - 通过正则表达式从列表中的字符串中提取数字