Что такое элегантный способ заказать список времени (чч: мм: сс) на заказанный? - PullRequest
0 голосов
/ 29 февраля 2020

У меня длинный список времени в формате 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'] как я могу получить это по порядку, используя некоторые модули или фрагмент кода, который делает это и проще, чем мой код?

Ответ: ['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

Кроме того, у меня есть другая проблема, которая теряет нули. Пожалуйста, помогите мне с этим, чтобы сохранить нули, как они были.

1 Ответ

2 голосов
/ 29 февраля 2020

Если все время действительно в формате 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']
>>> 

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...