2016-01-20 22 views
0

我有以下列表,列出了火車的到達和離開時間。如何在Python中對抵達和出發時間進行分類

arr = ['9:00', '9:40', '9:50', '11:00', '15:00', '18:00'] 
dep = ['9:10', '12:00', '11:20', '11:30', '19:00', '20:00'] 

我想合併和排序它們。我做了以下。

final = sorted(arr+dep) 

輸出:

['11:00', '11:20', '11:30', '12:00', '15:00', '18:00', '19:00', '20:00', '9:00', '9:10', '9:40', '9:50'] 

預期輸出:(實際排序時間戳)

['9:00', '9:10', '9:40', '9:50','11:00', '11:20', '11:30', '12:00', '15:00', '18:00', '19:00', '20:00'] 

如何實現預期的輸出?

+1

發現它們是字符串。 – HavelTheGreat

+0

這是因爲他們是TheGreat告訴的字符串 – The6thSense

回答

6

字符串按字典順序排序。 '9:00'將會在'11:00'之後出現,因爲對於字符串,'9'大於'1'

爲了解決這個問題,你可能會想從值各執':'和創建整數:

def sort_key(time): 
    hour, minute = time.split(':') 
    return int(hour), int(minute) 

arr = ['9:00', '9:40', '9:50', '11:00', '15:00', '18:00'] 
dep = ['9:10', '12:00', '11:20', '11:30', '19:00', '20:00'] 
sorted(arr + dep, key=sort_key) 
4

試試這個

>>> import datetime 
>>> arr = ['9:00', '9:40', '9:50', '11:00', '15:00', '18:00'] 
>>> dep = ['9:10', '12:00', '11:20', '11:30', '19:00', '20:00'] 
>>> sorted(dep+arr, key=lambda x: datetime.datetime.strptime(x, '%H:%M')) 
['9:00', '9:10', '9:40', '9:50', '11:00', '11:20', '11:30', '12:00', '15:00', '18:00', '19:00', '20:00'] 
相關問題