How to sort list of dictionary by value python
Sort list of dictionary by value python
Introduction
Consider we have a Python list that contains 3 dictionaries:
[{'name':'John', 'age':20}, {'name':'Bob', 'age':15}, {'name':'Charles', 'age':30}]When sorted by name, should become:
[{'name':'Bob', 'age':15}, {'name':'Charles', 'age':30}, {'name':'John', 'age':20}]Using sorted funciton with lambda
original_list = [{
'name': 'John',
'age': 20
}, {
'name': 'Bob',
'age': 15
}, {
'name': 'Charles',
'age': 30
}]
newlist = sorted(original_list, key=lambda k: k['name'])
print(newlist)Output:
[{'name': 'Bob', 'age': 15}, {'name': 'Charles', 'age': 30}, {'name': 'John', 'age': 20}]If sort using age:
newlist = sorted(original_list, key=lambda k: k['age'])
print(newlist)Out:
[{'name': 'Bob', 'age': 15}, {'name': 'John', 'age': 20}, {'name': 'Charles', 'age': 30}]Add reverse=True to sort descending
newlist = sorted(original_list, key=lambda k: k['name'], reverse=True)
print(newlist)Out:
[{'name': 'John', 'age': 20}, {'name': 'Charles', 'age': 30}, {'name': 'Bob', 'age': 15}]Using operator module
import operator
print('Before sorting:')
print(original_list)
original_list.sort(key=operator.itemgetter('name'))
print('After sorting:')
print(original_list)Out:
Before sorting:
[{'name': 'John', 'age': 20}, {'name': 'Bob', 'age': 15}, {'name': 'Charles', 'age': 30}]
After sorting:
[{'name': 'Bob', 'age': 15}, {'name': 'Charles', 'age': 30}, {'name': 'John', 'age': 20}]Completed example code
original_list = [{
'name': 'John',
'age': 20
}, {
'name': 'Bob',
'age': 15
}, {
'name': 'Charles',
'age': 30
}]
newlist = sorted(original_list, key=lambda k: k['name'])
print(newlist)
newlist = sorted(original_list, key=lambda k: k['age'])
print(newlist)
newlist = sorted(original_list, key=lambda k: k['name'], reverse=True)
print(newlist)
import operator
print('Before sorting:')
print(original_list)
original_list.sort(key=operator.itemgetter('name'))
print('After sorting:')
print(original_list)Last modified October 4, 2020