Open In App

Python | Sort given list of dictionaries by date

Given a list of dictionary, the task is to sort the dictionary by date. Let’s see a few methods to solve the task. Method #1: Using naive approach 




# Python code to demonstrate
# sort a list of dictionary
# where value date is in string
 
# Initialising list of dictionary
ini_list = [{'name':'akash', 'd.o.b':'1997-03-02'},
            {'name':'manjeet', 'd.o.b':'1997-01-04'},
            {'name':'nikhil', 'd.o.b':'1997-09-13'}]
                 
# printing initial list
print ("initial list : ", str(ini_list))
 
# code to sort list on date
ini_list.sort(key = lambda x:x['d.o.b'])
 
# printing final list
print ("result", str(ini_list))

Output:

initial list : [{‘name’: ‘akash’, ‘d.o.b’: ‘1997-03-02’}, {‘name’: ‘manjeet’, ‘d.o.b’: ‘1997-01-04’}, {‘name’: ‘nikhil’, ‘d.o.b’: ‘1997-09-13’}] result [{‘name’: ‘manjeet’, ‘d.o.b’: ‘1997-01-04’}, {‘name’: ‘akash’, ‘d.o.b’: ‘1997-03-02’}, {‘name’: ‘nikhil’, ‘d.o.b’: ‘1997-09-13’}]

The time complexity of the above Python code is O(n log n), where ‘n’ is the number of dictionaries in the list. 



The auxiliary space complexity of the code is O(1), as it only uses a constant amount of additional space, regardless of the size of the input. 

Method #2: Using datetime.strptime and lambda 




# Python code to demonstrate
# sort a list of dictionary
# where value date is in a string
 
from datetime import datetime
 
# Initialising list of dictionary
ini_list = [{'name':'akshat', 'd.o.b':'1997-09-01'},
            {'name':'vashu', 'd.o.b':'1997-08-19'},
            {'name':'manjeet', 'd.o.b':'1997-01-04'},
            {'name':'nikhil', 'd.o.b':'1997-09-13'}]
                 
# printing initial list
print ("initial list : ", str(ini_list))
 
# code to sort list on date
ini_list.sort(key = lambda x: datetime.strptime(x['d.o.b'], '%Y-%m-%d'))
 
# printing final list
print ("result", str(ini_list))

Output:

initial list : [{‘d.o.b’: ‘1997-09-01’, ‘name’: ‘akshat’}, {‘d.o.b’: ‘1997-08-19’, ‘name’: ‘vashu’}, {‘d.o.b’: ‘1997-01-04’, ‘name’: ‘manjeet’}, {‘d.o.b’: ‘1997-09-13’, ‘name’: ‘nikhil’}] result [{‘d.o.b’: ‘1997-01-04’, ‘name’: ‘manjeet’}, {‘d.o.b’: ‘1997-08-19’, ‘name’: ‘vashu’}, {‘d.o.b’: ‘1997-09-01’, ‘name’: ‘akshat’}, {‘d.o.b’: ‘1997-09-13’, ‘name’: ‘nikhil’}]

  Method #3: Using operator.itemgetter 




# Python code to demonstrate
# sort a list of dictionary
# where value date is in string
 
import operator
 
# Initialising list of dictionary
ini_list = [{'name':'akash', 'd.o.b':'1997-03-02'},
            {'name':'manjeet', 'd.o.b':'1997-01-04'},
            {'name':'nikhil', 'd.o.b':'1997-09-13'}]
                 
# printing initial list
print ("initial list : ", str(ini_list))
 
# code to sort list on date
ini_list.sort(key = operator.itemgetter('d.o.b'))
 
# printing final list
print ("result", str(ini_list))

Output:

initial list : [{‘d.o.b’: ‘1997-03-02’, ‘name’: ‘akash’}, {‘d.o.b’: ‘1997-01-04’, ‘name’: ‘manjeet’}, {‘d.o.b’: ‘1997-09-13’, ‘name’: ‘nikhil’}] result [{‘d.o.b’: ‘1997-01-04’, ‘name’: ‘manjeet’}, {‘d.o.b’: ‘1997-03-02’, ‘name’: ‘akash’}, {‘d.o.b’: ‘1997-09-13’, ‘name’: ‘nikhil’}]


Article Tags :