Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python中的字典计算两点之间的距离_Python_Dictionary - Fatal编程技术网

用python中的字典计算两点之间的距离

用python中的字典计算两点之间的距离,python,dictionary,Python,Dictionary,我试图计算两个位置之间的距离,使用它们的坐标。但是我不知道如何访问坐标值,因为它们在字典中 我对编码非常陌生,对于这个问题我发现的任何代码都不理解,因为它对我来说太高级了。我真的不知道从哪里开始。我的主要功能是创建字典:(编辑) {'Location1':{'40.155444793742276','28.950292890004903'}'Location2':…} 字典是这样的,所以键是名称,坐标是值。以下是函数,到目前为止它几乎不包含任何内容: def calculate_distance

我试图计算两个位置之间的距离,使用它们的坐标。但是我不知道如何访问坐标值,因为它们在字典中

我对编码非常陌生,对于这个问题我发现的任何代码都不理解,因为它对我来说太高级了。我真的不知道从哪里开始。我的主要功能是创建字典:(编辑)

{'Location1':{'40.155444793742276','28.950292890004903'}'Location2':…}

字典是这样的,所以键是名称,坐标是值。以下是函数,到目前为止它几乎不包含任何内容:

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': ... }