2014-12-03 42 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

我已经试过各种开头方法将项目拆分为列表,弹出元素,但我总是到达一个点,我不能继续... – 2014-12-03 18:17:00

+0

你可能提供一个示例输入和预期输出?我很难理解“一个按时间顺序排列的航班代码”的含义。 – 5gon12eder 2014-12-03 18:18:56

+0

“各种方法”并不比“多种方式”更具体。 – AndySavage 2014-12-03 18:18:57

回答

-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 2014-12-04 16:17:06

0

您可以分割字符串,并进行排序,先拆与'\n'字符串,然后用','分裂,并在结束时,你可以只用sorted功能基于splited字符串,它是时间的二路元素:

>>> 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']]