2014-12-03 2 views
-1

У меня есть эта строка с данными о полете, и я хочу написать функцию, которая получает КОД полета, и возвращает кортеж с полетными КОДАми, заказанными по времени. Это возможно? Я уже много раз пробовал, и я не могу это сделать. Может быть, со словарем?Элементы порядка заказа

"KLM75, Amsterdam, 14:35, 60, 50 
AF111, Paris, 14:20, 50, 64 
LH333, Frankfurt, 14:10, 112, 203 
KLM71, Madrid, 14:55, 120, 100 
TAP103, Salvador, 15:20, 174, 210 
LH123, Berlin, 15:10, 115, 210" 

#(CODE, Origin, time, passengers, lugage) 
+0

Я пытался, начиная с различными методы разбиения элементов на список, выскакивающие элементы, но я всегда прибываю в точку, где я не могу продолжить ... –

+0

Не могли бы вы представить пример ввода и ожидаемого вывода? У меня возникают трудности с пониманием того, что вы подразумеваете под «кортежем с полетными кодами, заказанными по времени». – 5gon12eder

+0

«Различные методы» не более конкретны, чем «многие способы». – AndySavage

ответ

-1
b="""KLM75, Amsterdam, 14:35, 60, 50 
AF111, Paris, 14:20, 50, 64 
LH333, Frankfurt, 14:10, 112, 203 
KLM71, Madrid, 14:55, 120, 100 
TAP103, Salvador, 15:20, 174, 210 
LH123, Berlin, 15:10, 115, 210""" 

print(sorted(b.split('\n'),key=lambda x:x.split(',')[2])) 
['LH333, Frankfurt, 14:10, 112, 203', 'AF111, Paris, 14:20, 50, 64', 'KLM75, Amsterdam, 14:35, 60, 50', 'KLM71, Madrid, 14:55, 120, 100', 'LH123, Berlin, 15:10, 115, 210', 'TAP103, Salvador, 15:20, 174, 210'] 

INT кода выше разрыва с символом новой строки, чтобы получить все строки, а затем использовать отсортированный сортировать их по времени. лямбда обеспечит ключ, т.е. время, используя раскол («») [2]

приведенный выше код имеет сделано только сортировка не производить кортеж: Ifyou нужен кортеж:

print(sorted([tuple(x.split(',')) for x in b.split('\n')],key=lambda x:x[2])) 
[('LH333', ' Frankfurt', ' 14:10', ' 112', ' 203'), ('AF111', ' Paris', ' 14:20', ' 50', ' 64'), ('KLM75', ' Amsterdam', ' 14:35', ' 60', ' 50'), ('KLM71', ' Madrid', ' 14:55', ' 120', ' 100'), ('LH123', ' Berlin', ' 15:10', ' 115', ' 210'), ('TAP103', ' Salvador', ' 15:20', ' 174', ' 210')] 
+0

любая причина для downvote ??? – Hackaholic

0

Вы можете разделить строку и сортируют, первый разделить строку с '\n' затем разделить с ',' и в конце концов вы можете просто использовать sorted функции на основе 2th элемента расщепляется строка, время:

>>> t=tuple(i.split(',') for i in s.split('\n')) 
>>> sorted(t,key= lambda x : x[2]) 
[['LH333', ' Frankfurt', ' 14:10', ' 112', ' 203'], ['AF111', ' Paris', ' 14:20', ' 50', ' 64'], ['KLM75', ' Amsterdam', ' 14:35', ' 60', ' 50'], ['KLM71', ' Madrid', ' 14:55', ' 120', ' 100'], ['LH123', ' Berlin', ' 15:10', ' 115', ' 210'], ['TAP103', ' Salvador', ' 15:20', ' 174', ' 210']] 
Смежные вопросы