Автор оригинала: Shubham Sayon.
Резюме: Используйте один из следующих методов для сортировки словаря по значению:
- Используя отсортировано (Dict1, .get) Метод.
- Использование Словарь понимание И Лямбда С отсортировано () Метод.
- Использование ЗаказДикт (Для более старых версий Python).
- Использование itemgetter () с отсортировано () Метод.
- Использование Счетчик подкласс.
Проблема: Учитывая Словарь ; Как отсортировать его по ценностям?
Пример: В следующем примере показан словарь по имени Ранг
Что хранит имена отдельных лиц в качестве клавиш, в то время как их соответствующие ряды представляют значения. Мы будем использовать этот пример в качестве ссылки при обсуждении решений.
rank = { 'Bob': 2, 'Alice': 4, 'Sharon': 5, 'Dwyane': 1, 'John': 3 } # Some Procedure to Sort the Dictionary by its Values
Выход:
{'Dwyane': 1, 'Bob': 2, 'John': 3, 'Alice': 4, 'Sharon': 5}
Прежде чем мы погрузиться в решения, здесь несколько Очки, чтобы помнить О словарях:
- От Python 3.7 вперед, словари Python заказываются (вставка также заказывается). Это означает, что заказанные, в которых ключи вставляются в словари, сохраняются.
- В обычных словарях сортировки сценариев приводит к отсортированному словарю по отношению к его ключам.
Чтобы получить лучшее представление о словарях Python, пожалуйста, следуйте нашему руководству по блогу по словарям здесь Отказ Тем не менее, целью данной статьи является исключительно, чтобы провести вас через многочисленные методы для сортировки словаря на основе значений вместо клавиш. Так что без дальнейшей задержки давайте погрузимся в решения.
➤ Вот быстрый обзор всех методов, используемых в этой статье. Пожалуйста, следуйте за слайд-шоу Дайте ниже:
Метод 1: Использование отсортированного (DICT1, .get) Метод
отсортировано ()
Метод представляет собой встроенный метод в Python, который используется для сортировки элементов итеративного в определенном порядке ( восходящая или нисходящий ). После сортировки элементов он возвращает отсортированную последовательность в виде отсортированного списка.
Синтаксис:
Для того, чтобы сортировать словарь, используя значения, мы можем использовать мощность отсортировано ()
функция. Чтобы сортировать словарь на основе значения, мы можем использовать получать()
метод и передайте его на ключ
Аргумент отсортировано ()
функция.
Давайте посмотрим на следующий код, чтобы понять использование отсортировано
Функция для решения нашей проблемы:
rank = { 'Bob': 2, 'Alice': 4, 'Sharon': 5, 'Dwyane': 1, 'John': 3 } for w in sorted(rank, key=rank.get): print(w, rank[w])
Выход:
Dwyane 1 Bob 2 John 3 Alice 4 Sharon 5
Для того, чтобы сортировать словарь, используя его значения в обратном порядке, нам нужно указать Обратный
аргумент как правда
, то есть,
rank = { 'Bob': 2, 'Alice': 4, 'Sharon': 5, 'Dwyane': 1, 'John': 3 } for w in sorted(rank, key=rank.get, reverse=True): print(w, rank[w])
Выход:
Sharon 5 Alice 4 John 3 Bob 2 Dwyane 1
Способ 2: Использование понимания словаря и лямбда с сортировкой () методом
Если вы используете Python 3.6 и выше Тогда наша проблема может быть решена в одной строке, используя понимание словаря и функцию лямбда в рамках отсортировано
метод. Это эффективное и краткое решение для сортировки словарей на основе их значений.
⦿ Словарь понимание Является ли красным и эффективным способом Создание и инициализация словарей в одной строке кода Python. Он состоит из двух частей: выражения и контекста. выражение Определяет, как отображать ключи к значениям. контекст Петли по поводу передового использования одной строки для петли и определяют пары, которые (ключ, значение) пары включают в новый словарь. Чтобы узнать больше о справедливости словаря в Python посмотрите на наш Руководство по разговору здесь Отказ
Теперь давайте посмотрим на следующий код, приведенный ниже, который объясняет использование справедливости словаря для решения нашей проблемы в одной ложе кода.
rank = { 'Bob': 2, 'Alice': 4, 'Sharon': 5, 'Dwyane': 1, 'John': 3 } print({k: v for k, v in sorted(rank.items(), key=lambda item: item[1])})
Выход:
{'Dwyane': 1, 'Bob': 2, 'John': 3, 'Alice': 4, 'Sharon': 5}
Способ 3: Использование упорядоченногоddict (для более старых версий Python)
Словари, как правило, неупорядочены для версий до Python 3.7, поэтому невозможно отсортировать словарь. Поэтому для преодоления этого ограничения нам нужно использовать ЗаказДикт
подкласс.
⦿ a ЗаказДикт является подклассом словаря, который сохраняет порядок, в котором значения ключа вставляются в словаре. Он включен в Коллекции
Модуль в Python.
Давайте посмотрим, как мы можем использовать ЗаказДикт
Чтобы заказать словари в более ранних версиях Python и сортировать их.
from collections import OrderedDict rank = { 'Bob': 2, 'Alice': 4, 'Sharon': 5, 'Dwyane': 1, 'John': 3 } a = OrderedDict(sorted(rank.items(), key=lambda x: x[1])) for key,value in a.items(): print(key, value)
Выход:
('Dwyane', 1) ('Bob', 2) ('John', 3) ('Alice', 4) ('Sharon', 5)
Метод 4: Использование itemgetter () С сортировкой () методом
⦿ itemgetter ()
это встроенная функция Оператор
Модуль, который создает Callable, который принимает итабельный, как список, кортеж, набор и т. Д. В качестве ввода и извлечения N TH элемент из этого.
Пример:
from operator import itemgetter rank = { 'Bob': 2, 'Alice': 4, 'Sharon': 5, 'Dwyane': 1, 'John': 3 } a = sorted(rank.items(), key=itemgetter(1)) print(dict(a))
Выход:
{'Dwyane': 1, 'Bob': 2, 'John': 3, 'Alice': 4, 'Sharon': 5}
В приведенном выше примере А
хранит список кортежей. Поэтому мы преобразовали его на Словарь
явно, при печати.
Метод 5: Использование счетчика
Счетчик это подкласс словаря, который используется для подсчета hashable объектов. Поскольку значения, которые мы используем, являются целыми числами, мы можем использовать Счетчик
класс, чтобы сортировать их. Счетчик
Класс должен быть импортирован из модуля коллекций.
Отказ от ответственности: Это работа – вокруг проблемы под рукой и может не соответствовать любой ситуации. С тех пор, как значения словаря в нашем случае являются целыми числами, Счетчик Подкласс подходит для решения нашей проблемы. Учитывайте его как бонусный трюк! 😉
from collections import Counter rank = { 'Bob': 2, 'Alice': 4, 'Sharon': 5, 'Dwyane': 1, 'John': 3 } count = dict(Counter(rank).most_common()) print(count)
Выход:
{'Dwyane': 1, 'Bob': 2, 'John': 3, 'Alice': 4, 'Sharon': 5}
⦿ В приведенной выше программе метод наиболее общий ()
был использован для возврата всех элементов в счетчик.
Заключение
В этом мы узнали о следующих методах для сортировки словаря по значениям в Python:
- Используя отсортировано (Dict1, .get) Метод.
- Использование Словарь понимание И Лямбда С отсортировано () Метод.
- Использование ЗаказДикт (Для более старых версий Python).
- Использование itemgetter () с отсортировано () Метод.
- Использование Счетчик подкласс.
Я надеюсь, что после прочтения этой статьи вы можете с облегчением сортировать словари по своим значениям. Пожалуйста, подпишитесь и оставайся настроенными для более интересных статей в будущем.
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.
Вы можете связаться со мной @:
Оригинал: “https://blog.finxter.com/how-to-sort-a-dictionary-by-value-in-python/”