【发布时间】:2015-04-30 21:37:59
【问题描述】:
我有一个如下所示的 csv 文件(位置名称、纬度、经度):
LocA, 40, 75
LocB, 100, -80
LocC, 45, 50
LocD, 20, -30
...
我有一个硬编码的起始位置(纬度、经度):
[20, -30]
使用欧几里得:
d = sqrt((x2 - x1)^2 + (y2 - y1)^2)
我需要一个离我的起点最近的位置的列表(或数组)。我被困在循环遍历 csv 文件并从那里获取所有纬度和经度。我不知道是否应该在循环内进行计算,还是在将所有内容保存在集合中之后再进行计算。我正在考虑使用字典,将所有内容放入其中,然后在循环之后进行计算。
# parse csv file using csv library
myCSV = csv.reader(open("temp.csv"))
dict = {}
# extract lats and longs in the csv file
for line in myCSV:
另一件事是预期的输出应该是这样的:
LocC, 45, 50
LocD, 20, -30
LocA, 40, 75
LocB, 100, -80
...
不是从最小到最大排序的数字列表。上面的例子只是为了指出输出应该是 name + lat + long,而不是数字列表(距离)。我没有在这里进行实际计算。如果计算得当,输出可能会有所不同。我也被困在这里,因为在得到从 min 到 max 的列表后,我该如何对原始 csv 文件进行排序?
【问题讨论】:
-
所以你的输出应该和你的输入一样?
-
哦不,应该排序。我没有在这里进行实际计算。我只是指出输出应该有名称 + lat + long 而不是测量的距离(这是一个单一的数字)。
-
可以将输出写入新的csv文件,而不是对原始文件进行排序。,覆盖原始文件。我现在正在添加我的代码。
标签: python sorting csv dictionary location