Ad

Find A Record From List Of Dictionary With Multiple Condition Python

- 1 answer

hi I have a scenario like

data = [
    {"name": "name1", "date": "1997-07-16 19:20:00+01:00" , 'last_modified':"1997-07-16 19:20:00+01:00"},
    {"name": "name3", "date": "2006-07-16 19:20:00+01:00" ,  'last_modified':"1997-07-16 19:20:00+01:00"},
    {"name": "name2", "date": "1992-07-16 19:20:00+01:00",  'last_modified':"1997-07-16 19:20:00+01:00"}]

and from this data I am getting latest record like this:

sorted_files = sorted(data, key=lambda d: d.get('last_modified', {}), reverse=True)

Now issue is in some cases last modified can be same . so In that case I have to compare their date field .and get the latest from date field . how I can do this using this 1 liner preferably ?

Ad

Answer

IIUC, you can use a tuple as key:

sorted_files = sorted(data, key=lambda d: (d.get('last_modified', {}),
                                           d.get('date', {})
                                          ),
                      reverse=True)
sorted_files

output:

[{'name': 'name3',
  'date': '2006-07-16 19:20:00+01:00',
  'last_modified': '1997-07-16 19:20:00+01:00'},
 {'name': 'name1',
  'date': '1997-07-16 19:20:00+01:00',
  'last_modified': '1997-07-16 19:20:00+01:00'},
 {'name': 'name2',
  'date': '1992-07-16 19:20:00+01:00',
  'last_modified': '1997-07-16 19:20:00+01:00'}]
Ad
source: stackoverflow.com
Ad