我需要帮助。我正在使用Google API距离矩阵和Python 3.5来找出距离另一个点最近的点。我有下面的词典列表,我希望有一个输出:
"原点1:最近的目的地是目的地1(1504米)"
"原点2:最近的目的地是目的地1(2703米)"
所以......
任何ideia如何获得此输出?
response=[{'rows': [{'elements': [{'distance': {'text': '1.5 km', 'value': 1504},\
'duration': {'text': '4 mins', 'value': 247}, 'status': 'OK'}]}],\
'origin_addresses': ['Origin 1'], 'destination_addresses': ['Destination 1'], 'status': 'OK'},\
{'rows': [{'elements': [{'distance': {'text': '2.7 km', 'value': 2703},\
'duration': {'text': '7 mins', 'value': 430}, 'status': 'OK'}]}],\
'origin_addresses': ['Origin 2'], 'destination_addresses': ['Destination 1'], 'status': 'OK'},\
{'rows': [{'elements': [{'distance': {'text': '4.8 km', 'value': 4753},\
'duration': {'text': '10 mins', 'value': 586}, 'status': 'OK'}]}],\
'origin_addresses': ['Origin 1'], 'destination_addresses': ['Destination 2'], 'status': 'OK'},\
{'rows': [{'elements': [{'distance': {'text': '6.0 km', 'value': 5952},\
'duration': {'text': '13 mins', 'value': 769}, 'status': 'OK'}]}],\
'origin_addresses': ['Origin 2'], 'destination_addresses': ['Destination 2'], 'status': 'OK'}]\
答案 0 :(得分:0)
下面是代码,它将找到每个原点的最短距离,然后根据示例格式显示结果:
from collections import OrderedDict
def find_closest(distances):
closest = OrderedDict()
for distance in distances:
origin = distance['origin_addresses'][0]
destination = distance['destination_addresses'][0]
value = distance['rows'][0]['elements'][0]['distance']['value']
if origin not in closest or value < closest[origin][1]:
closest[origin] = (destination, value)
return closest
def format_closest(closest):
for origin, (destination, value) in closest.items():
yield "%s: the closest destination is %s (%d m)" % (origin, destination, value)
for line in format_closest(find_closest(response)):
print(line)
请注意,我使用了OrderedDict来保留您的响应中的排序。如果这对您无关紧要,您可以将OrderedDict()
替换为{}
。
有关格式化结果的列表,只需使用:
list(format_closest(find_closest(response)))