Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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,我有一份字典的清单。在每个字典中,我需要使用字典中的值,字典中的值: [{'Cells': {'Address': 'Нижний Кисельный переулок, дом 3, строение 1', 'AdmArea': 'Центральный административный округ', 'District': 'Мещанский район', 'IsNetObject': 'нет', 'Name': 'Юнион Джек', 'Oper

我有一份字典的清单。在每个字典中,我需要使用字典中的值,字典中的值:

[{'Cells': {'Address': 'Нижний Кисельный переулок, дом 3, строение 1',
   'AdmArea': 'Центральный административный округ',
   'District': 'Мещанский район',
   'IsNetObject': 'нет',
   'Name': 'Юнион Джек',
   'OperatingCompany': None,
   'PublicPhone': [{'PublicPhone': '(495) 621-19-63'}],
   'SeatsCount': 30,
   'SocialPrivileges': 'нет',
   'geoData': {'coordinates': [37.62158794615201, 55.76536695660836],
    'type': 'Point'},
   'global_id': 20660594},
  'Id': 'ae3e9479-070f-4d66-9429-de3acd8427ac',
  'Number': 1},
 {'Cells': {'Address': 'проспект Мира, дом 91, корпус 1',
   'AdmArea': 'Северо-Восточный административный округ',
   'District': 'Останкинский район',
   'IsNetObject': 'нет',
   'Name': 'Бар «Джонни Грин Паб»',
   'OperatingCompany': None,
   'PublicPhone': [{'PublicPhone': '(495) 602-45-85'}],
   'SeatsCount': 50,
   'SocialPrivileges': 'нет',
   'geoData': {'coordinates': [37.635709999611, 55.805575000159],
    'type': 'Point'},
   'global_id': 20660628},
  'Id': 'c5301186-00bb-4a1f-af03-6f3237292a51',
  'Number': 2},
我得到了坐标
[格度,姿态]
。我想找出给定坐标和字典中坐标之间的最小距离。所以我需要迭代字典,计算距离。 我是个新手,但我想更专业地使用生成器来计算距离。但是,使用
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


那么,简而言之:在这个数据结构中,找到距给定点的最小距离的最有效方法是什么?

首先,假设您有一个函数get_distance(),该函数用lat和long查找两点之间的距离。我可以描述它,但我认为现在这不是问题的重点。然后,代码将如下所示:

cells = {...} # your data is here
point = [..] # coordinates of the point 
distances = {get_distance(point, cell['Cells']['geoData']['coordinates']): cell['Id'] for cell in cells}  # I don't know do you need a whole entry to be found or only `Id`
closest_id = distances[min(distances.keys())]
当然,这只是可能的解决方案。我已经通过dict理解完成了,但有时通过suaul
for
循环更容易实现。如果有什么不清楚的地方,请告诉我


如果您在编写
get\u distance
函数时遇到问题,这里有一个例子:(当然需要修改一下,使其看起来像get\u distance函数)

首先,让我们假设您有一个函数get\u distance(),该函数使用lat和long查找两点之间的距离。我可以描述它,但我认为现在这不是问题的重点。然后,代码将如下所示:

cells = {...} # your data is here
point = [..] # coordinates of the point 
distances = {get_distance(point, cell['Cells']['geoData']['coordinates']): cell['Id'] for cell in cells}  # I don't know do you need a whole entry to be found or only `Id`
closest_id = distances[min(distances.keys())]
当然,这只是可能的解决方案。我已经通过dict理解完成了,但有时通过suaul
for
循环更容易实现。如果有什么不清楚的地方,请告诉我



如果您在编写
get\u distance
函数时也遇到问题,那么这里有一个例子:(当然需要修改一下,使其看起来像get\u distance函数)

很抱歉,这里没有重复的键@正如您所看到的,所有“单元”键都在不同的字典中。如果我需要重复这些格言,这仍然是一个问题吗?谢谢你对地理测量学的建议,但我想我只需要一个最小的欧几里得距离,一旦人们回答了,不要改变这个问题it@jonrsharpe还没有人接。解决方案并不可行work@dsgdfg我的观点非常接近(1镇的特例),所以我认为WSG是平面协调的,但这里没有重复的关键!正如您所看到的,所有“单元”键都在不同的字典中。如果我需要重复这些格言,这仍然是一个问题吗?谢谢你对地理测量学的建议,但我想我只需要一个最小的欧几里得距离,一旦人们回答了,不要改变这个问题it@jonrsharpe还没有人接。解决方案并不可行work@dsgdfg我的观点非常接近(1镇的特例),所以我认为WSG是扁平的坐标,请看Edd1!无法复制它。。。您使用什么版本的Python?也许您可以尝试使用类似于
dict([(获取距离(点,单元格['Cells']['geoData']['coordinates']),单元格['Id'])的内容来表示单元格中的单元格])
我正在使用python 3.5。请帮我弄清楚,
单元格
-您的解决方案中的词典列表?嗯,那应该没问题。。。是的,cells是一个带有地址的dict列表,上面是看起来(几乎)像你的代码的副本-我输入了一个变量名,这并不重要。代码对我有用..请参见Edit1!无法复制它。。。您使用什么版本的Python?也许您可以尝试使用类似于
dict([(获取距离(点,单元格['Cells']['geoData']['coordinates']),单元格['Id'])的内容来表示单元格中的单元格])
我正在使用python 3.5。请帮我弄清楚,
单元格
-您的解决方案中的词典列表?嗯,那应该没问题。。。是的,cells是一个带有地址的dict列表,上面是看起来(几乎)像你的代码的副本-我输入了一个变量名,这并不重要。代码对我有用。。