【问题标题】:What is an elegant way to order a list of time (hh:mm:ss) to a ordered one?将时间列表(hh:mm:ss)排序为有序列表的优雅方法是什么?
【发布时间】:2020-02-28 22:38:12
【问题描述】:

我有一长串时间列表,格式为hh:mm:ss,我想订购它们。为简单起见,假设给定列表如下

l=['07:35:00','01:51:00','04:38:00','09:31:00','12:40:00','06:30:00','12:02:00','04:20:00','02:33:00'] 如何使用一些模块或代码 sn-p 来按顺序执行此操作并且比我的代码更简单?

回答:['1:51:0','2:33:0','4:20:0','4:38:0','6:30:0','7:35:0','9:31:0','12:2:0','12:40:0']

我的尝试:
我编写了以下函数:

def time_sorting(l):
    t = [ list(map(int, i.split(':')))  for i in l ] 
    a = np.asarray(t)
    h = a[np.argsort(a[:,0])]
    a[np.argsort(a[:,0])]
    t_l = list()
    for i in range(24):
        t_l.extend( h[ h[:, 0] == i] [np.argsort(h[ h[:, 0] == i ][:,1]) ].tolist() )
    t_f = [':'.join(list(map(str,i))) for i in t_l]    
    return t_f

另外,我还有其他问题是丢失零。请帮助我保持零原样。

【问题讨论】:

  • 如果所有时间都在HH:MM:SS,那么你只需要l.sort()
  • time_sorting = sorted
  • @accdias:行得通!!!。请把它写成答案。

标签: python string list time


【解决方案1】:

如果所有时间都是HH:MM:SS 格式,那么您只需要sort()。看看吧:

>>> # pprint is just for a nicely formatted output
>>> from pprint import pprint
>>> times = [
...    '07:35:00',
...    '01:51:00',
...    '04:38:00',
...    '09:31:00',
...    '12:40:00',
...    '06:30:00',
...    '12:02:00',
...    '04:20:00',
...    '02:33:00'
... ]  
>>>               
>>> times.sort()
>>> pprint(times)
['01:51:00',
 '02:33:00',
 '04:20:00',
 '04:38:00',
 '06:30:00',
 '07:35:00',
 '09:31:00',
 '12:02:00',
 '12:40:00']
>>> 

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2019-02-05
    • 2023-03-05
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2013-03-05
    • 2021-10-12
    相关资源
    最近更新 更多