Вы делаете
array.sort(key = findDistance)
Это означает, что алгоритм сортировки использует findDistance()
, чтобы найти «ключ» для каждого значения, которое он сортирует.По сути, он принимает список, делает findDistance()
для каждого элемента в этом списке, а затем сортирует список по возвращаемым значениям.Таким образом, array.sort()
ожидает, что все, что указано как key
, сможет принять одно значение и выплюнуть другое значение, которое можно использовать для сортировки.
Я не знаю, как вы структурируете свою базу данных, или в каком формате будет ваш массив, но давайте предположим для этого примера, что каждый элемент в массиве является списком с индексами, соответствующимистолбцы, которые вы перечислили (например, «широта» будет индексом 4
, «долгота будет индексом 5
и т. д.). Затем вам нужно переписать findDistance()
, чтобы принять один из них в качестве параметра:
def findDistance(city):
lat1 = 42.8864
lon1 = -78.8784
lat2 = city[4] # notice how we're using the variable that was passed in,
lon2 = city[5] # instead of accessing get_us_cities()
distance = great_circle_distance(lat1, lon1, lat2, lon2)
return distance