czxt3000 2023-12-22 07:51 采纳率: 73.4%
浏览 3
已结题

有关字典的这两个报警是怎么回事?

代码如下

def cfg_device_relate(self):
        # 有效设备的参数
        self.eff_device_para = {}
        # 有效屏幕的参数
        self.eff_screen_para = {}
        # 有效项目(数值列表)
        self.eff_subject_para = []
        # 判断
        device_eff = self.cfg_para['识别设备'] in self.device_dict.keys()
        if (device_eff):
            self.eff_device_para = dict(self.device_dict[self.cfg_para['识别设备']])
            screen_eff = self.cfg_para['识别屏幕'] in self.eff_device_para.keys()
            # 判断项目
            if (screen_eff):
                self.eff_screen_para = self.eff_device_para[self.cfg_para['识别屏幕']]
                sub_eff = self.cfg_para['识别项目'] in self.eff_screen_para.keys()
                if (sub_eff):
                    self.eff_subject_para = list(self.eff_screen_para[self.cfg_para['识别项目']])

Pycharm

倒数第三行警告
Unresolved attribute reference 'keys' for class 'str'
倒数第一行警告
Expected type 'Union[SupportsIndex, slice]', got 'str' instead

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2023-12-22 08:19
    关注

    1、第一个警告,"Unresolved attribute reference 'keys' for class 'str'",它表示字符串类没有名为'keys'的属性或方法,self.eff_screen_para是一个字符串。
    2、第二个警告,"Expected type 'Union[SupportsIndex, slice]', got 'str' instead",表示期望的是一个索引值或切片对象,但实际传递的却是一个字符串。
    self.cfg_para['识别项目']的结果是字符串。

    self.eff_screen_para = self.eff_device_para[self.cfg_para['识别屏幕']]
    sub_eff = self.cfg_para['识别项目'] in self.eff_screen_para.keys()
      if (sub_eff):
        self.eff_subject_para = list(self.eff_screen_para[self.cfg_para['识别项目']])
    

    为了消除警告,可以使用isinstance函数来检查这两个字符串对象是否为字典类型,然后再调用keys方法。

    修改后的代码如下:

    def cfg_device_relate(self):
        # 有效设备的参数
        self.eff_device_para = {}
        # 有效屏幕的参数
        self.eff_screen_para = {}
        # 有效项目(数值列表)
        self.eff_subject_para = []
        # 判断
        device_eff = isinstance(self.cfg_para['识别设备'], dict)
        if device_eff:
            self.eff_device_para = dict(self.device_dict[self.cfg_para['识别设备']])
            screen_eff = isinstance(self.cfg_para['识别屏幕'], dict)
            # 判断项目
            if screen_eff:
                self.eff_screen_para = self.eff_device_para[self.cfg_para['识别屏幕']]
                sub_eff = isinstance(self.cfg_para['识别项目'], dict)
                if sub_eff:
                    self.eff_subject_para = list(self.eff_screen_para[self.cfg_para['识别项目']])
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 已采纳回答 12月22日
  • 修改了问题 12月22日
  • 创建了问题 12月22日

悬赏问题

  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题