lizy169 发表于 2023-7-15 21:08

类 'dict' 未定义 '__getitem__'

import datetime
data_dict = {
    'A': datetime.date(2023, 6, 30),
    'B': datetime.date(2023, 7, 12),
    'C': datetime.date(2023, 7, 11),
    'D': datetime.date(2023, 7, 12),
    'E': datetime.date(2023, 7, 12),
}

for i in data_dict:
    date = data_dict
    print(i)
    print(date)
   
# 偶尔会提示类 'dict' 未定义 '__getitem__',有时又没有提示

# 请大神解惑,要怎么才能不产生这种提示?程序是正常运行的,有点强迫症,必应搜索了,没看明白

hrh123 发表于 2023-7-15 21:08

lizy169 发表于 2023-7-15 21:25
一样的,最开始我就没有加str,出现这个问题才加的,过几天又出现这种禁告,反正时有时不有,代码没变, ...

试试使用类型提示,显式地将字典的键和值的类型指定为字符串和日期类型:
```python
from typing import Dict
data_dict: Dict = {
    'A': datetime.date(2023, 6, 30),
    'B': datetime.date(2023, 7, 12),
    'C': datetime.date(2023, 7, 11),
    'D': datetime.date(2023, 7, 12),
    'E': datetime.date(2023, 7, 12),
}
```

lizy169 发表于 2023-7-15 21:10

用的pycharm,有的说是版本旧了,后面升级到最新版本也是一样的

hrh123 发表于 2023-7-15 21:16

可能是变量i的类型不确定导致的,循环后面那行直接用     date = data_dict
就好了

lizy169 发表于 2023-7-15 21:25

hrh123 发表于 2023-7-15 21:16
可能是变量i的类型不确定导致的,循环后面那行直接用     date = data_dict


一样的,最开始我就没有加str,出现这个问题才加的,过几天又出现这种禁告,反正时有时不有,代码没变,用这种方法循环字典也是一样:
for k,v in dict_1.items():
    print(k,">>",v)

hrh123 发表于 2023-7-15 21:29

本帖最后由 hrh123 于 2023-7-15 21:34 编辑

lizy169 发表于 2023-7-15 21:25
一样的,最开始我就没有加str,出现这个问题才加的,过几天又出现这种禁告,反正时有时不有,代码没变, ...
那应该就是IDE的问题吧,你的IDE可能没理解你的代码

px307 发表于 2023-7-15 22:14

这个可能就是pycharm的bug,很多人都遇到,包括PyCharm 2023.1 RC版
https://youtrack.jetbrains.com/issue/PY-50136/Regression-of-PY-39510-Class-dict-does-not-define-getitem

hrh123 发表于 2023-7-15 23:27

楼主用的pycharm啊,怪不得,pycharm莫名其妙的提示很多,不要管就好,我的工作区日常20多个,一般我只处理红的提示
页: [1]
查看完整版本: 类 'dict' 未定义 '__getitem__'