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
相关产品推荐
相关产品推荐

