Вы можете преобразовать даты в datetime.datetime
объекты, а затем отсортировать, используя объект datetime
в качестве ключа:
import datetime, csv
data = [[*i[:2], datetime.datetime(*map(int, i[2:5])), *i[5:]] for i in csv.reader(open('test_csv.csv'))]
result = sorted(data, key=lambda x:x[2])
Вывод:
[['Ayr', ' Corbiere', datetime.datetime(2016, 11, 3, 0, 0), '25', ' lost'], ['Aintree', ' Red Rum', datetime.datetime(2017, 5, 12, 0, 0), '11.58', ' won'], ['Aintree', ' Hurricane Fly', datetime.datetime(2017, 5, 12, 0, 0), '11.58', ' won'], ['Aintree', ' Murder', datetime.datetime(2017, 5, 12, 0, 0), '5', ' lost']]
Правка: получениедата и сумма:
new_data = [i[2:-1] for i in result]
Вывод:
[[datetime.datetime(2016, 11, 3, 0, 0), '25'], [datetime.datetime(2017, 5, 12, 0, 0), '11.58'], [datetime.datetime(2017, 5, 12, 0, 0), '11.58'], [datetime.datetime(2017, 5, 12, 0, 0), '5']]
Редактировать 1: форматирование результата datetime
в виде строки:
new_result = [[f'{a.day}/{a.month}/{a.year}', b] for a, b in new_data]
Вывод:
[['3/11/2016', '25'], ['12/5/2017', '11.58'], ['12/5/2017', '11.58'], ['12/5/2017', '5']]