字典迭代

问题描述 投票:0回答:1

熊猫Excel文件阅读

我正在尝试访问excel文件的行和列并进行一些基本的距离计算,但是我一直得到相同的值>我正在尝试通过遍历的列表来查找距地图任意两点的距离我创建的字典中的边和它们对应的值。不知道我在这里做错了什么。任何指导表示赞赏。

import pandas as pd
import array
import numpy as np
import pyomo.environ as pyo
from math import sin, cos, sqrt, atan2, radians
import requests
import urllib.request
import time
from bs4 import BeautifulSoup

distance = pd.read_csv("Distance File.csv")
distance.head()

d_long = distance["Longitude"]
d_lat = distance["Latitude"]
print(d_long)
print(d_lat)

distance_dict = {}
location = list(range(0, 10))
print(location)
for i in d_long:
    for j in d_lat:
        for x in location:
            distance_dict[x] = i, j
            # distance_dict.update(d1)
print(distance_dict)

opt = pyo.SolverFactory("glpk")
V = list(distance_dict.keys())  # List of Customers
Customers = (1, 2, 3, 4, 5, 6, 7, 8, 9)
distance_dict = distance_dict  # Dict of customers

E = []

for i in V:
    for j in V:
        if i != j:
            E.append((i, j))
print(E)
c = {}
for (i, j) in E:
    lat = radians(abs(distance_dict[i][1]))
    lon = radians(abs(distance_dict[i][0]))
    lat2 = radians(abs(distance_dict[j][1]))
    lon2 = radians(abs(distance_dict[j][0]))
    dlon = lon2 - lon
    dlat = lat2 - lat
    a = sin(dlat / 2) ** 2 + cos(lat) * cos(lat) * sin(dlon / 2) ** 2
    c[i, j] = 2 * atan2(sqrt(a), sqrt(1 - a))
    print(dlat)
print(c)
python pyomo
1个回答
0
投票
由于您构造字典的方式,每次获得的距离都相同。具体来说,这段代码就在这里:

for i in d_long: for j in d_lat: for x in location: distance_dict[x] = i, j

对于location中的所有键,请设置d_lat / long中的值的最后一个值>
© www.soinside.com 2019 - 2024. All rights reserved.