Способы сортировки списка словарей по значениям в Python - Использование itemgetter

Опубликовано: 19 Января, 2022

Предыдущая статья этого сегмента была посвящена сортировке списков словарей по значениям с использованием лямбда-функции.

Способы сортировки списка словарей по значениям в Python - Использование лямбда-функции

Эта статья нацелена на выполнение этой функции с помощью itemgetter и демонстрацию видимых различий.

Itemgetter can be used instead of lambda function to achieve the similar functionality. Outputs in same way as sorted() and lambda, but has different internal implementation. It takes keys of dictionaries and converts them into tuples. It reduces overhead and is faster and more efficient. The “operator” module has to be imported for its working. The code is explained below

# Python code demonstrate the working of sorted()
# and itemgetter
  
# importing "operator" for implementing itemgetter
from operator import itemgetter
  
# Initializing list of dictionaries
lis = [{ "name" : "Nandini", "age" : 20}, 
{ "name" : "Manjeet", "age" : 20 },
{ "name" : "Nikhil" , "age" : 19 }]
  
# using sorted and itemgetter to print list sorted by age 
print "The list printed sorting by age: "
print sorted(lis, key=itemgetter("age"))
  
print (" ")
  
# using sorted and itemgetter to print list sorted by both age and name
# notice that "Manjeet" now comes before "Nandini"
print "The list printed sorting by age and name: "
print sorted(lis, key=itemgetter("age", "name"))
  
print (" ")
  
# using sorted and itemgetter to print list sorted by age in descending order
print "The list printed sorting by age in descending order: "
print sorted(lis, key=itemgetter("age"),reverse = True)

Выход:

Список распечатал с сортировкой по возрасту: 
[{'age': 19, 'name': 'Nikhil'}, {'age': 20, 'name': 'Nandini'}, {'age': 20, 'name': 'Manjeet'}]

В списке распечатана сортировка по возрасту и имени: 
[{'age': 19, 'name': 'Nikhil'}, {'age': 20, 'name': 'Manjeet'}, {'age': 20, 'name': 'Nandini'}]

В списке распечатана сортировка по возрасту в порядке убывания: 
[{'age': 20, 'name': 'Nandini'}, {'age': 20, 'name': 'Manjeet'}, {'age': 19, 'name': 'Nikhil'}]

    Преимущества itemgetter перед лямбда

  • Производительность : itemgetter работает лучше, чем лямбда-функции в контексте времени.
  • Краткий:: itemgetter выглядит более кратким при доступе к нескольким значениям, чем лямбда-функции.
    
    itemgetter (1,3,4,5) ---> Выглядит более лаконично
    key (s [1], s [2], s [3], s [4]) ---> Выглядит менее лаконично
    

    Эта статья предоставлена Манджитом Сингхом . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью на сайте deposit.geeksforgeeks.org или отправить свою статью по электронной почте: grant@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

    Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

    Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

    Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.