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))

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

这个错误是因为在试图求最小值时,您传递了一个 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)


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^