2014-12-03 37 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']]