使用key参数to list.sort()或sorted()函数提供要排序的值.
values.sort(key=somefunction)
Run Code Online (Sandbox Code Playgroud)
其中somefunction有一个参数(要转换的值).
然后将根据key参数的返回值对列表进行排序,但原始值本身保持不变.
对于您的问题,您可以使用:
def daytime(val):
hour, min = map(int, val.split(':'))
if hour < 8:
hour += 12
return hour, min
Run Code Online (Sandbox Code Playgroud)
这将改变8:01以(8, 1)和6:25到(18, 25),导致.sort()或sorted()排序8:01前6:25:
>>> sorted(['1:14', '8:01', '12:46', '6:25'], key=daytime)
['8:01', '12:46', '1:14', '6:25']
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息和提示,请参阅Python排序HOWTO(使用此Google缓存链接,直到wiki.python.org从最近的安全漏洞中恢复).