如何在python中对到达和离开时间进行排序

Kur*_*lar 0 python sorting time list

我有以下列表表示列车的到达和出发时间.

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']
Run Code Online (Sandbox Code Playgroud)

我想合并和排序它们.我做了以下.

final = sorted(arr+dep)
Run Code Online (Sandbox Code Playgroud)

输出:

['11:00', '11:20', '11:30', '12:00', '15:00', '18:00', '19:00', '20:00', '9:00', '9:10', '9:40', '9:50']
Run Code Online (Sandbox Code Playgroud)

预期输出:( 实际的时间戳排序)

['9:00', '9:10', '9:40', '9:50','11:00', '11:20', '11:30', '12:00', '15:00', '18:00', '19:00', '20:00']
Run Code Online (Sandbox Code Playgroud)

我如何实现预期的输出?

mgi*_*son 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)
Run Code Online (Sandbox Code Playgroud)