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)
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
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)
不知道你这个问题是否已经解决, 如果还没有解决的话: