用python中的字典计算两点之间的距离
我试图计算两个位置之间的距离,使用它们的坐标。但是我不知道如何访问坐标值,因为它们在字典中 我对编码非常陌生,对于这个问题我发现的任何代码都不理解,因为它对我来说太高级了。我真的不知道从哪里开始。我的主要功能是创建字典:(编辑) {'Location1':{'40.155444793742276','28.950292890004903'}'Location2':…} 字典是这样的,所以键是名称,坐标是值。以下是函数,到目前为止它几乎不包含任何内容:用python中的字典计算两点之间的距离,python,dictionary,Python,Dictionary,我试图计算两个位置之间的距离,使用它们的坐标。但是我不知道如何访问坐标值,因为它们在字典中 我对编码非常陌生,对于这个问题我发现的任何代码都不理解,因为它对我来说太高级了。我真的不知道从哪里开始。我的主要功能是创建字典:(编辑) {'Location1':{'40.155444793742276','28.950292890004903'}'Location2':…} 字典是这样的,所以键是名称,坐标是值。以下是函数,到目前为止它几乎不包含任何内容: def calculate_distance
def calculate_distance(dictionary, location1, location2):
distance_x = dictionary[location1] - dictionary[location2]
# Here I don't know how I can get the values from the dictionary,
# since there are two values, longitude and latitude...
distance_y = ...
distance = ... # Here I will use the pythagorean theorem
return distance
基本上,我只需要知道如何使用字典,因为我不知道如何获得值,以便使用它们来计算距离。
-->如何从字典中搜索一个键,并获取要使用的值。谢谢你回答我愚蠢的问题。:) 有多种方法,下面列出了几种:
# option 1
for i, v in data.items(): # to get key and value from dict.
for k in v: # get each element of value (its a set)
print (k)
# option 2
for i, v in data.items(): # to get key and value from dict.
value_data = [k for k in list(v)] # convert set to list and put it in a list
print (i, value_data[0], value_data[1]) # use values from here
我建议您阅读python文档,以获得更深入的知识。您刚开始学习时,这会让您更加困难,这很正常 让我们看看,您有一个输出字典的函数,其中键是位置,值是坐标对。 首先让我们谈谈您使用的数据类型
location_map={'Location1': {'40.155444793742276', '28.950292890004903'}, 'Location2': ... }
我认为您的值有问题,它们似乎是字符串集。这对您的目标有两个主要优势。首先,set对象不支持索引,这意味着您无法访问
位置图['Location1'][0]
以获取第一个坐标。尝试此操作会出现类型错误
。相反,在创建地图时使用元组将允许您索引。可以通过将坐标定义为元组([经度,纬度])
而不是{经度,纬度}
其次,您的坐标似乎是字符串,为了对数据执行算术运算,您需要一个数字类型,例如整数,或者在您的情况下是浮点。如果您以字符串形式读取经度和纬度值,您可以使用
float(longitude)
和float(latitude)
对其进行转换。您能告诉我们a)创建dict的主函数部分和b)类型的值(dictionary[location1])请?纬度/经度坐标上的欧几里德距离不是一个好主意:例如点(0,90)
和(180,90)
在球体上的位置完全相同,但欧几里德距离返回180
。改用哈弗森公式。
location_map={'Location1': {'40.155444793742276', '28.950292890004903'}, 'Location2': ... }