您應該在解析de xml文件時存儲元組(例如)所有點對及其距離的列表。
mypoints = [(distance12, x1, x2),...,(distancenm, xn, xm)]
mypoints.sort()
three_closer = mypoints[:3]
適應這代碼:
..............
mypoints = []
for row in rows:
# Get coords for current record
curr_coords = row.getAttribute("lat") + ',' + row.getAttribute("lng")
# Get distance
tempDistance = distance.distance(user_coords, curr_coords).miles
mypoints.append((tempDistance, row))
mypoints.sort()
#the three closest points:
mythree_shorter = mypoints[0:3]
for distance, row in mythree_shorter:
shortestStation = json.dumps(
{'number': row.getAttribute("number"),
'address': row.getAttribute("address"),
'lat': row.getAttribute("lat"),
'lng': row.getAttribute("lng"),
'open': row.getAttribute("open")},
sort_keys=True,
indent=4)
save_in_some_way(shortestStation) #maybe writing to a file?
..................
感謝您的幫助!我不認爲寫入文件是可行的,因爲這些數據將被iPhone使用。我不太理解第二個for()循環。它如何知道只能得到最近的3個?我假設它在'mypoints [0:3]'中完成,但我的python只是基本的。我會無論如何測試它,並讓你知道。 – eoinzy 2011-04-22 22:41:38
謝謝華金!我使用了一些你的代碼,並使其工作!唯一缺少的是「最短站點」上的「+ =」,所以我現在擁有的方式是「最短站點=最短站點+ json.dumps()....」。再次感謝!! – eoinzy 2011-04-22 22:55:11
最接近的三個存儲在mythree_sorter中,並按循環順序進行。第二個for循環是爲了保存三個更接近的點,作爲json字符串序列化(列表,文件),或者將它們發送到某處(取決於您)... – joaquin 2011-04-22 22:59:27