Monday, November 18, 2024
Google search engine
HomeLanguagesPython | Sort given list of dictionaries by date

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 

Python3




# 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 

Python3




# 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 

Python3




# 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’}]

RELATED ARTICLES

Most Popular

Recent Comments