2

i have a list of tuples which is like following

[('John', datetime.datetime(2016, 11, 27, 18, 18), datetime.datetime(2017, 11, 27, 18, 18)), ('Adam', datetime.datetime(2017, 11, 27, 18, 18), datetime.datetime(2018, 11, 27, 18, 18), ('Adam', datetime.datetime(2001, 05, 27, 18, 18), datetime.datetime(2002, 09, 27, 18, 18)) ('Adam', datetime.datetime(2015, 11, 27, 18, 18), datetime.datetime(2016, 11, 27, 18, 18))]

How can i sort this list based on the datetime object, basically its in the format Name,From date, To date

foret
  • 337
  • 1
  • 5
  • 14

2 Answers2

5

Just use the key parameter of sorted on from_date:

import datetime

data = [('John', datetime.datetime(2016, 11, 27, 18, 18), datetime.datetime(2017, 11, 27, 18, 18)),
        ('Adam', datetime.datetime(2017, 11, 27, 18, 18), datetime.datetime(2018, 11, 27, 18, 18)),
        ('Adam', datetime.datetime(2001,  5, 27, 18, 18), datetime.datetime(2002,  9, 27, 18, 18)),
        ('Adam', datetime.datetime(2015, 11, 27, 18, 18), datetime.datetime(2016, 11, 27, 18, 18))]


result = sorted(data, key=lambda x: x[1])

for e in result:
    print(e)

Output

('Adam', datetime.datetime(2001, 5, 27, 18, 18), datetime.datetime(2002, 9, 27, 18, 18))
('Adam', datetime.datetime(2015, 11, 27, 18, 18), datetime.datetime(2016, 11, 27, 18, 18))
('John', datetime.datetime(2016, 11, 27, 18, 18), datetime.datetime(2017, 11, 27, 18, 18))
('Adam', datetime.datetime(2017, 11, 27, 18, 18), datetime.datetime(2018, 11, 27, 18, 18))
Dani Mesejo
  • 61,499
  • 6
  • 49
  • 76
1

I'm not sure if I got the question right. But, I think you're looking for something like this:

sorted(a, key=lambda x: x[1])

Since you can compare DateTime objects with each other, the only thing remaining to do is to ask the sorted function to sort based on them (in this case the second element of each tuple).

Razzaghnoori
  • 344
  • 1
  • 8