Страницы

Поиск по вопросам

пятница, 12 июля 2019 г.

Поиск ближайших объектов в списке

В общем, у меня есть файл со строками вида: ADG,AIRPORT,USA,49221,,MI,,Madison,Adrian,,W Cadmus Rd,-84.07275,41.87428,Lenawee County Airport,
ADS,AIRPORT,USA,75001,,TX,,Addison,,4699,Airport Pky,-96.83121,32.96595,Addison Airport,
ADT,AIRPORT,USA,74820,,OK,,Ada,,,Airport Rd,-96.67693,34.80222,Ada Municipal Airport, Есть функция, запрашивающая ввести широту и долготу, т.е. (-84.07275,41.87428), эти координаты - наше местоположение. Мне нужно чтобы при вводе широты и долготы печатались аэропорты по отдалению от нас. Всяко пробовал, не получается, может вы подскажете? def search(obj1, obj2): for line in file_airport: Str_file = ''.join(line).title() List_file = Str_file.split(',') List_file2 = [List_file[12:13], List_file[11:12], List_file] sorted(List_file2) if list(obj1) < List_file2[0]: for count in range(1,10): count += 1 print sorted(List_file2[0]), List_file2[2], '
' break Я пока написал то что думал для широты, но выводит не то, что нужно. При таком виде как у меня написано выводит следующее: ['42.06228'] ['Aia', 'Airport', 'Usa', '69301', '', 'Ne', '', 'Box Butte', 'Alliance', '', 'Sarpy Rd', '-102.81021', '42.06228', 'Alliance Municipal Airport', '
']
['40.11228'] ['Aid', 'Airport', 'Usa', '46017', '', 'In', '', 'Chesterfield', 'Anderson', '282', 'Airport Rd', '-85.61454', '40.11228', 'Anderson Municipal Airport', ''] Где и есть List_file2[0] - ['40.11228'] Как я понял он может не сортировать их из-за того что например, на данный момент в цикле сравнивается list(obj1) сList_file2[0], т.е. одну строку. Так ли это? И как это исправить?


Ответ

введите код здесьНа первый взгляд проблема может быть в строке sorted(List_file2) Попробуйте так: List_file2 = sorted(List_file2) или List_file2.sort() Функция sorted возвращает новый отсортированный массив, а содержимое List_file2 не меняется. Метод sort списка производит изменение содержимого объекта, у которого он был вызван. upd: Еще не понятно вот это: for count in range(1,10): count += 1 # <--- зачем? Если это счетчик, то он инкрементируется автоматически, а если нужно идти через два шага, то нужно писать for count in range(1, 10, 2) upd2: вот набросал простенький пример: http://ideone.com/wETPW

Комментариев нет:

Отправить комментарий