Ваш вопрос эквивалентен: Как отсортировать список Python, используя пользовательский метод для определения ключа сортировки. Это можно сделать в сыром python без использования внешних библиотек.
При использовании функции Python sorted()
вы можете передать лямбду аргументу key
, чтобы выполнить сортировку по определенному ключу.
Оттуда вам просто нужно определить ключ как ваш собственный метод расчета расстояния (здесь, используя расстояния между точками):
from math import *
coordinates = [(-225.0, -299.5), (-150.0, 75.5), (0.0, 0.0), (225.0, 300.5)]
xy = (-222.4, -204.5)
results = sorted(coordinates, key= lambda v: sqrt(pow((v[0] - xy[0]), 2) + pow((v[1] - xy[1]), 2)))
# Output : [(-225.0, -299.5), (-150.0, 75.5), (0.0, 0.0), (225.0, 300.5)]
Оттуда вы можете просто взять первый элемент списка, если вы хотите приблизить точку и т. Д. Если вы все еще хотите использовать внешний модуль, я думаю, что вы можете использовать некоторые сторонние функции, такие как from scipy.spatial import distance
, в качестве ключевого параметра сортировка.