我有以下代码:
for table in list(my_dict.keys()):
if table in my_other_dict:
for file in my_dict[table]:
if file in my_other_dict[table]:
my_dict[table].remove(file)
if not my_dict[table]:
del my_dict[table]
但是第二个、第三个和第四个
my_dict
参考文献带有下划线,并出现以下错误:
类“dict”的下标会产生运行时异常;括 在引号中键入注释
我能找到的唯一或多或少相关的互联网资源是这篇文章,但我不明白如何将其应用到我的案例中。
确实,当执行这一小段代码时,并没有出现运行时异常。
此外,最后一个
my_dict
引用带有下划线,并带有以下错误消息:
通用类类型无法删除
该字典由以下函数构建并返回(仅签名,内容太大):
def meta_from_iso_to_utf(self, correct_meta_files):
如何修复我的代码,以便 pylance 停止抱怨这些问题,因为代码按预期运行,这些问题似乎不是问题?
编辑1(回答弗兰克的评论):
my_dict
的定义如下:
some_dict, my_dict = object.meta_from_iso_to_utf(
argument
)
在该方法中,
my_dict
在循环中的定义如下:
my_dict[key].append[value[0]]
table
是循环过程中包含my_dict
的键的变量,是一个字符串。该变量仅在此循环中使用。
我的编辑器是
visual studio code 1.60.1
,带有微软版本的Python扩展v2021.9.1246542782
如果我添加这样的类型注释,我会收到这种错误:
errors: list[str]
这会导致“类“list”的下标将生成运行时异常;将类型注释括在引号中”。
所以对于你的问题“试图告诉我的 pylance 下标错误是什么”。 这意味着,如果您在此上下文中使用
list
作为类型注释而不是实际的列表声明,那么您应该将其放在双引号中以避免错误。所以如果我将代码更改为:
errors: "list[str]"
皮兰斯很高兴。至于您的特定代码示例,我只能想象它发生在那里,因为 pylance 由于某种原因检测到这必须是类型注释的一部分,而不是列表类型的实际用法。