You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyCharm类型警告疑问:代码运行正常却报Unexpected type(s): (int)

PyCharm中字典遍历索引警告的原因与解决办法

警告原因

代码能正常运行但PyCharm触发警告,核心原因是:

  • 你用enumerate()包裹stock_data.items()完全多余(代码里根本没用到index变量),反而干扰了PyCharm的类型推断系统,误将item(实际是dict.items()返回的(键, 值)元组)识别为str类型,因此认为用整数索引item[0]是非法操作,触发了类型不匹配警告。

解决办法

方法1:移除多余的enumerate

既然不需要遍历索引,直接遍历stock_data.items()即可,PyCharm能正确识别item为元组类型:

stock_data = {'2023-12-29': {'1. open': '255.1000', '2. high': '255.1900'},
               '2023-12-28': {'1. open': '263.6600', '2. high': '265.1300'},
               '2023-12-27': {'1. open': '258.3500', '2. high': '263.3400'},
             }
dates = [item[0] for item in stock_data.items()]
print(dates)

方法2:直接提取字典键(最简洁)

你需要的日期本身就是字典的键,直接转成列表即可,无需遍历items():

stock_data = {'2023-12-29': {'1. open': '255.1000', '2. high': '255.1900'},
               '2023-12-28': {'1. open': '263.6600', '2. high': '265.1300'},
               '2023-12-27': {'1. open': '258.3500', '2. high': '263.3400'},
             }
dates = list(stock_data.keys())
print(dates)

方法3:添加类型注解(若坚持用enumerate)

如果一定要保留enumerate(无实际意义),可以给字典添加类型注解,帮助PyCharm正确推断类型:

from typing import Dict

stock_data: Dict[str, Dict[str, str]] = {'2023-12-29': {'1. open': '255.1000', '2. high': '255.1900'},
               '2023-12-28': {'1. open': '263.6600', '2. high': '265.1300'},
               '2023-12-27': {'1. open': '258.3500', '2. high': '263.3400'},
             }
dates = [item[0] for index, item in enumerate(stock_data.items())]
print(dates)

内容的提问来源于stack exchange,提问作者Ishu Modanwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:17:44