远航的恒星 2023-02-01 20:37 采纳率: 66.7%
浏览 90
已结题

TypeError: 'float' object is not iterable

类型错误浮点对象不可迭代
TypeError: 'float' object is not iterable
def tengxun(self,addr):
        # addr1=self.addr
        # addr=self.comboBox.currentText()+self.comboBox_2.currentText()+self.lineEdit.text()
        print(str(addr))
        print(11111111)
        url = "https://apis.map.qq.com/jsapi?"   #腾讯地图API接口
        para = {
            "qt": "geoc",
            "addr":addr, #传入地址参数
            "output": "json",
            "key": "S7RBZ-RL2E 3-7IP3C-364T2-SPW77-3QFG3", #即腾讯地图API的key
            "pf":"jsapi",
            "ref":"jsapi"
        }
        req = requests.get(url,para) #请求数据
        req = req.json() #转为json格式
        #print(req)
        m = req["detail"]
        print(m)
        g = f"{m['pointx']},{m['pointy']}" #解析到经纬度数据
        print(g)
        df1 = pd.read_excel("result.xlsx")
        df2=df1['经纬度']
        print(df2.values)
        df3=df1["名称"]
        print(df3.values)
        df4=df3.values
        h=g.split(",")
        for i in df2.values:
            for j in df3.values:
                print(i)
                k=i.split(",")
                print(j)
                print(k[0])
                print(h[0])
                if float(k[0])>float(h[0]):
                    if float(k[1])>float(h[1]):
                        dis=(float(k[0])-float(h[0]))+(float(k[1])-float(h[1]))
                        self.dis[j]={"name":j,"dis":dis}
                        
                    else:
                        dis=(float(k[0])-float(h[0]))+(float(h[1])-float(k[1]))
                        self.dis[j]={"name":j,"dis":dis}
                else:
                    if float(k[1])<float(h[1]):
                        dis=(float(h[0])-float(k[0]))+(float(h[1])-float(k[1]))
                        self.dis[j]={"name":j,"dis":dis}
                    else:
                        dis=(float(h[0])-float(k[0]))+(float(k[1])-float(h[1]))
                        self.dis[j]={"name":j,"dis":dis}
        print(self.dis)
        print(self.dis)
        for i in self.dis.keys():
            temp=self.dis[i]
            print(temp["dis"])
        first=min(temp["dis"])
            
        print(first)
        return g
        


        
    def start (self):
        add1=""
        addr=self.comboBox.currentText()+self.comboBox_2.currentText()+self.lineEdit.text()
        # print(add1)
        addr2="上海市闵行区漕宝路3138号"
        self.addr=add1
        # print(addr)
        self.tengxun(addr)

Traceback (most recent call last):

File "e:\python\项目\停车管理\停车排序管理.py", line 222, in start
self.tengxun(addr)
File "e:\python\项目\停车管理\停车排序管理.py", line 207, in tengxun
first=min(temp["dis"])
TypeError: 'float' object is not iterable

尝试使用https://blog.csdn.net/sl01224318/article/details/108183799 中提到的转为astype(str)的方法,但是显示AttributeError: 'float' object has no attribute 'astype',修稿代码如下:
for i in self.dis.keys():
            temp=self.dis[i]
            print(temp["dis"])
        first=min(temp["dis"].astype(str))

希望各位答主能够帮我解决这个问题呀~我要提交申报,比较急,谢谢!
  • 写回答

2条回答 默认 最新

  • Eliot5566 2023-02-01 21:07
    关注

    这个错误是因为在试图求最小值时,您传递了一个 float 对象,而不是一个列表,集合或其他可迭代对象。

    在解决方案中,您可以将所有距离存储在列表中,然后使用 min 函数计算最小距离

    这个错误是因为在试图求最小值时,您传递了一个 float 对象,而不是一个列表,集合或其他可迭代对象。

    在解决方案中,您可以将所有距离存储在列表中,然后使用 min 函数计算最小距离。

    下面是代码修改的示例:

    
    ```python
    def tengxun(self,addr):
        # addr1=self.addr
        # addr=self.comboBox.currentText()+self.comboBox_2.currentText()+self.lineEdit.text()
        print(str(addr))
        print(11111111)
        url = "https://apis.map.qq.com/jsapi?"   #腾讯地图API接口
        para = {
            "qt": "geoc",
            "addr":addr, #传入地址参数
            "output": "json",
            "key": "S7RBZ-RL2E 3-7IP3C-364T2-SPW77-3QFG3", #即腾讯地图API的key
            "pf":"jsapi",
            "ref":"jsapi"
        }
        req = requests.get(url,para) #请求数据
        req = req.json() #转为json格式
        #print(req)
        m = req["detail"]
        print(m)
        g = f"{m['pointx']},{m['pointy']}" #解析到经纬度数据
        print(g)
        df1 = pd.read_excel("result.xlsx")
        df2=df1['经纬度']
        print(df2.values)
        df3=df1["名称"]
        print(df3.values)
        df4=df3.values
        h=g.split(",")
        dis_list = []
        for i in df2.values:
            for j in df3.values:
                print(i)
                k=i.split(",")
                print(j)
                print(k[0])
                print(h[0])
                if float(k[0])>float(h[0]):
                    if float(k[1])>float(h[1]):
                        dis=(float(k[0])-float(h[0]))+(float(k[1])-float(h[1]))
                        self.dis[j]={"name":j,"dis":
    
    
    
    
    具体来说,错误发生在:
    first = min(temp["dis"])
    
    这行代码中。你正在试图对一个浮点数求最小值,但是min函数只能用于迭代对象,而不是单个的浮点数。
    
    解决方案:把dis的值单独存下来,用一个列表存储,再取最小值。
    
    
    ```python
    dis_list = []
    for i in self.dis.keys():
        temp = self.dis[i]
        dis_list.append(temp["dis"])
    first = min(dis_list)
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月12日
  • 已采纳回答 2月4日
  • 修改了问题 2月1日
  • 创建了问题 2月1日

悬赏问题

  • ¥15 使用yolov5-7.0目标检测报错
  • ¥15 对于这个问题的解释说明
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备