Часть 2 из серии статей о сортировке списков Python
Это вторая часть этой замечательной короткой серии статей о том, как сортировать список Python. Мы будем сортировать список словарей Python! Итак, давайте сделаем это!
Итак, первая часть этой мини-серии познакомила вас с некоторыми основными концепциями сортировки списков Python. Во второй части мы рассмотрим это на более сложном примере.
Если вы помните, последняя мини-серия списков Python сортировки работала с простым списком чисел. НО это было важно, так как познакомило вас с основами сортировки Python. Если вы еще не проверяли его, сделайте это, потому что это поможет вам понять некоторые из представленных здесь концепций.
Итак, как и в предыдущем примере, у нас будет это в двух частях, определяющих наши данные, а затем в следующей части будет рассмотрено, как отсортировать список Python словаря Python.
Определение данных
В этом примере у нас будет список словаря Python с гипотетическим содержанием на 1 кг различных порций продуктов.
Для этого наш словарь Python будет выглядеть так:
"""
{
'name': {string},
'calories_in_cals_per_kg': {number},
'proteins_in_grams_per_kg': {number}
}
"""
Как видите, это действительно просто.
name - это просто название порции, calories_in_cals_per_kg указывает, сколько калорий мы можем получить из 1 кг этой порции еды, а protein_in_grams_per_kg - количество белка на 1 кг порции.
Конечно, вы также можете добавить другие гипотетические атрибуты и значения.
Объявление наших данных
Теперь, когда мы знаем структуру данных, с которыми мы собираемся отсортировать список словарей Python, давайте объявим наши данные:
foods = [
{
'name': 'Maize Flour',
'calories_in_cals_per_kg': 88,
'proteins_in_grams_per_kg': 43
},
{
'name': 'Rice',
'calories_in_cals_per_kg': 105,
'proteins_in_grams_per_kg': 55
},
{
'name': 'Yams',
'calories_in_cals_per_kg': 97,
'proteins_in_grams_per_kg': 87
},
{
'name': 'Beans',
'calories_in_cals_per_kg': 50,
'proteins_in_grams_per_kg': 111
}
]
Хорошо, теперь, когда данные готовы, давайте начнем изучать, как сортировать список словарей Python.
Требования
Поскольку мы собираемся использовать только методы Python, мы будем использовать знаменитый itemgetter из модуля operator.
Итак, импортируем:
from operator import itemgetter
Теперь мы готовы использовать itemgetter.
Как использовать itemgetter с сортировкой Python
Теперь, когда мы импортировали itemgetter в наш скрипт, мы представляем его сортированному методу Python следующим образом:
sorted(list_to_sort, key=itemgetter('attribute_to_use'))
Это значение по умолчанию для использования сортировки Python для сортировки списка словарей Python. Обратите внимание, что мы передаем attribute_to_use в качестве ключа в метод сортировки Python.
Итак, давайте попробуем отсортировать наши продукты по количеству калорий:
sort_foods_based_on_calories = sorted(foods, key=itemgetter('calories_in_cals_per_kg'))
print(sort_foods_based_on_calories)
Это будет отсортировать список словарей Python, которые мы ему передаем, а по ПО УМОЛЧАНИЮ он будет отсортировать в возрастающем порядке, ОСНОВАННЫЙ по указанному атрибуту.
Хорошо, теперь давайте изменим задачу и скажем, что вместо этого мы хотим отсортировать предоставленный список Python, от списка с самым высоким содержанием калорий до самого низкого.
sort_foods_based_on_highest_calories = sorted(foods, key=itemgetter('calories_in_cals_per_kg'), reverse=True)
print(sort_foods_based_on_highest_calories)
Обратите внимание на параметр reverse. Если вы не знаете, что он делает, просто найдите ссылку внизу предыдущей статьи, в которой рассказывается, как сортировать список Python.
Итак, если вы хотите, чтобы список был отсортирован по наивысшему количеству белков на кг, тогда наш метод сортировки Python будет таким:
sort_foods_based_on_highest_proteins = sorted(foods, key=itemgetter('proteins_in_grams_per_kg'), reverse=True)
print(sort_foods_based_on_highest_proteins)
Что ж, это так просто!
Хорошо, а что, если вы попытаетесь отсортировать по атрибуту, которого нет? Что ж, вы получите Python KeyError с указанием отсутствующего атрибута, по которому вы пытаетесь выполнить сортировку.
Некоторые ключевые концепции
Хорошо, как видите, отсортировать список словарей Python не так уж и сложно. Итак, как и в предыдущей статье, у нас есть несколько ключевых концепций, которые вы должны извлечь из этого руководства.
- Вам понадобится itemgetter из операторского модуля.
- Метод сортировки Python примет ключевой атрибут, по которому вы хотите выполнить сортировку. Это указывает на значение, возвращаемое itemgetter.
Заключение
Ну вот и все из этой статьи.
Если некоторые из представленных здесь концепций, например, как использовать Python с сортировкой для сортировки списка Python, неясны, просто найдите полное введение в предыдущей статье.
Удачного кодирования!
Вы заинтересованы в изучении Python? Ознакомьтесь с похожими классными статьями здесь: Похожие статьи
Больше контента на plainenglish.io