Как отсортировать словарь по значению в Python 3.7

В предыдущих версиях Python словари по своей природе неупорядочены, но другие типы данных, такие как списки и кортежи, не являются беспорядочными. Начиная с Python 3.6, встроенный словарь будет упорядочен . Мы уже видели, как сортировать словарь по ключу в Python.

Сортировать словарь по значению в Python

Чтобы отсортировать словарь по значению в Python, используйте комбинацию понимания словаря, метода sorted (), цикла for, dict.items () и лямбда-функции. Словари нельзя отсортировать, но вы можете составить из них отсортированный список. Чтобы получить список, используйте функцию dict.items ().

Пример

 data = {1: 21, 3  : 46, 4: 31, 2: 19, 0: 11} sorted_by_val = {k: b для k, b в sorted (data.items (), key = lambda element: element [1])} print (sorted_by_val) 

Вывод

 {0: 11, 2: 19, 1: 21, 4: 31, 3: 46} 

Этот код будет отсортировать словарь по значениям каждой записи в словаре от наименьшего к наибольшему.

Вы можете видеть из вывод, что словарь отсортирован по его значениям.

Чтобы отсортировать его в порядке убывания, добавьте reverse = True .

 data = {1: 21, 3: 46, 4: 31, 2: 19, 0: 11} sorted_by_val = {k: b для k, b  in sorted (data.items (), key = lambda element: element [1], reverse = True)} print (sorted_by_val) 

Вывод

 {3: 46, 4: 31, 1: 21, 2: 19, 0: 11} 

Сортировать словарь по значению с помощью цикла for

Для сортировки объявлений ictionary по значению, используйте функцию sorted (), чтобы упорядочить значения словаря, а затем используйте цикл for для сортировки значений, находя ключи для каждого значения. Мы добавляем эти пары ключ-значение в отсортированном порядке в новый словарь.

 data = {1: 21,  3: 46, 4: 31, 2: 19, 0: 11} sorted_values ​​= sorted (data.values ​​()) # Сортировка значенийorted_dict = {} для i в sorted_values: для k в data.keys (): if data [  k] == i: sorted_dict [k] = data [k] breakprint (sorted_dict) 

Вывод

 {0:  11, 2: 19, 1:21, 4: 31, 3: 46} 

До Python 3.7 сортировка словаря по значениям с помощью sorted ()

До версии Python 3.7 после сортировки словаря по значениям, чтобы сохранить отсортированный словарь, мы должны использовать OrderedDict — доступный в модуле коллекций. Эти объекты представляют собой словари, сохраняющие порядок вставки.

 import operatorfrom collection import OrderedDictdata = {1: 21, 3: 46, 4: 31, 2: 19, 0: 11} sorted_tuples = sorted  (data.items (), ключ = оператор. itemgetter (1)) sorted_dict = OrderedDict () для k, v в sorted_tuples: sorted_dict [k] = vprint (sorted_dict) 

Вывод

 OrderedDict ([(0, 11), (2, 19), (1, 21), (4, 31), (3, 46)]) 

И вы можете видим, что мы получили словарь, отсортированный по значениям с помощью OrderedDict из модуля collections .

Заключение

В этом руководстве мы увидели, как сортировать словарь на основе его значений. Сначала мы отсортировали словарь, используя цикл, сортировку, лямбда-функцию и понимание словаря. Этот метод короткий, и он даст вам именно то, что вы хотите. Если вы хотите в порядке убывания, передайте reverse = True методу sorted ().

Вот и все.

Оцените статью
nanomode.ru
Добавить комментарий