You are currently viewing Различные способы сортировки словаря по ключам и обратной сортировки по ключам

Различные способы сортировки словаря по ключам и обратной сортировки по ключам

Обязательное условие: Словари на Python

Словарь — это коллекция, которая является неупорядоченной, изменяемой и индексируемой. В Python словари пишутся в фигурных скобках, и в них есть ключи и значения. Мы можем получить доступ к значениям словаря с помощью ключей. В этой статье мы обсудим 10 различных способов сортировки словаря Python по ключам, а также обратную сортировку по ключам.

Использование sorted() и keys():

keys() метод возвращает объект представления, который отображает список всех ключей в словаре. sorted() используется для сортировки ключей словаря.

Примеры:

Ввод:
my_dict = {'c':3, 'a':1, 'd':4, 'b':2} 
Выход:
ответ: 1 b: 2 c: 3 d: 4 
# Initialising a dictionary
my_dict = {'c':3, 'a':1, 'd':4, 'b':2}

# Sorting dictionary
sorted_dict = my_dict.keys()
sorted_dict = sorted(sorted_dict)

# Printing sorted dictionary
print("Sorted dictionary using sorted() and keys() is : ")
for key in sorted_dict:
	print(key,':', my_dict[key])

Выход:

Отсортированный словарь с использованием sorted() и keys() является : 
ответ : 1
б : 2
c : 3
d : 4

Использование sorted() и items():

метод items() используется для возврата списка со всеми ключами словаря со значениями. Он возвращает объект представления, который отображает список пары кортежей данного словаря (ключ, значение). Функция sorted() используется для сортировки ключей словаря.

Примеры:

Входные данные:
my_dict = {2:'three', 1:'two', 4:'five', 3:'four'}

Вывод:
1 'two'
2 'three'
3 'Four'
4 'Five'
# Initialising dictionary
my_dict = {2: 'three', 1: 'two', 4: 'five', 3: 'four'}

# Sorting dictionary
sorted_dict = sorted(my_dict.items())

# Printing sorted dictionary
print("Sorted dictionary using sorted() and items() is :")
for k, v in sorted_dict:
	print(k, v)

Выход:

Сортированный словарь с использованием sorted() и items() является :
1 два
2 три
1 two
2 three
3 four
4 five

Использование sorted() и keys() в одной строке:

Здесь мы используем как sorted(), так и keys() в одной строке.

Примеры:

Ввод:
my_dict = {'c':3, 'a':1, 'd':4, 'b':2} 
Выход:
Сортированный словарь : ['a','b','c','d'] 
# Initialising a dictionary
my_dict = {'c': 3, 'a': 1, 'd': 4, 'b': 2}
# Sorting dictionary
sorted_dict = sorted(my_dict.keys())

# Printing sorted dictionary
print("Sorted dictionary is : ", sorted_dict)

Выход:

Отсортирован словарь : ['a', 'b', 'c', 'd']

Использование sorted() и items() в одной строке

Здесь мы используем оба sorted() и items() в одной строке.

Примеры:

Входные данные:
my_dict = {'red':'#FF0000', 'green':'#008000', 'black':'#000000', 'white':'#FFFFFF'}

Вывод:
Отсортированным словарем является : 
black :: #000000
green :: #008000
red :: #FF0000
white :: #FFFFFF
# Initialising a dictionary
my_dict = {'red': '#FF0000', 'green': '#008000',
		'black': '#000000', 'white': '#FFFFFF'}

# Sorting dictionary in one line
sorted_dict = dict(sorted(my_dict .items()))

# Printing sorted dictionary
print("Sorted dictionary is : ")
for elem in sorted(sorted_dict.items()):
	print(elem[0], " ::", elem[1])

Выход:

Отсортированным словарем является : 
black :: #000000
green :: #008000
red :: #FF0000
white :: #FFFFFF

С помощью лямбда-функция

Функция lambda возвращает ключ(0-й элемент) для определенного кортежа элементов, когда они передаются методу sorted (), она возвращает отсортированную последовательность, которая затем вводится в словарь.

Примеры:

Ввод:
my_dict = {'a': 23, 'g': 67, 'e': 12, 45: 90} 
Выход:
Отсортирован словарь с использованием лямбда : {'e': 12, 'a': 23, 'g': 67, 45: 90} 
# Initialising a dictionary
my_dict = {'a': 23, 'g': 67, 'e': 12, 45: 90}

# Sorting dictionary using lambda function
sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[1]))

# Printing sorted dictionary
print("Sorted dictionary using lambda is : ", sorted_dict)

Выход:

Отсортирован словарь с использованием лямбда : {'e': 12, 'a': 23, 'g': 67, 45: 90}

Использование json:

Python не позволяет сортировать словарь. Но при преобразовании словаря в JSON вы можете явно отсортировать его так, чтобы полученный JSON был отсортирован по ключам. Это справедливо для многомерного словаря.

Примеры:

Входные данные:
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}

Вывод:
Отсортирован словарь : {"a": 1, "b": 2, "c": 3,"d":4}
# Importing json
import json

# Initialising a dictionary
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}

# Sorting and printind in a single line
print("Sorted dictionary is : ", json.dumps(my_dict, sort_keys=True))

Выход:

Отсортирован словарь : {"a": 1, "b": 2, "c": 3, "d": 4}

Использование pprint

Модуль Python pprint фактически уже сортирует словари по ключу. Модуль pprint предоставляет возможность “красиво печатать” произвольные структуры данных Python в форме, которую можно использовать в качестве входных данных для интерпретатора.

Примеры:

Входные данные:
my_dict = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}

Вывод:
Отсортированным словарем является :
{0: 0, 1: 2, 2: 1, 3: 4, 4: 3}
# Importing pprint
import pprint

# Initialising a dictionary
my_dict = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}

# Sorting and printing in a single line
print("Sorted dictionary is :")
pprint.pprint(my_dict)

Использование коллекций и упорядоченных данных

OrderedDict-это стандартный класс библиотеки, который находится в модуле «Коллекции». OrderedDict сохраняет порядок вставленных ключей.

Примеры:

Входные данные:
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}1}

Вывод:
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
# Importing OrderedDict
from collections import OrderedDict

# Initialising a dictionary
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}

# Sorting dictionary
sorted_dict = OrderedDict(sorted(my_dict.items()))

# Printing sorted dictionary
print(sorted_dict)

Выход:

OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)]) 

Использование sortedcontainers и SortedDict :

Сортированный дикт-это сортированное изменяемое сопоставление, в котором ключи хранятся в отсортированном порядке. Сортированный дикт-это сортированное изменяемое отображение. Сортированный диктант наследуется от диктанта для хранения элементов и поддерживает сортированный список ключей. Для этого нам нужно установить sortedcontainers.

sudo pip install sortedcontainers

Примеры:

Ввод:
my_dict = {"b": 2, "c": 3, "a": 1,"d":4} 
Выход:
{"a": 1, "b": 2, "c": 3,"d":4} 
# Importing SortedDict
from sortedcontainers import SortedDict

# Initialising a dictionary
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}

# Sorting dictionary
sorted_dict = SortedDict(my_dict)

# Printing sorted dictionary
print(sorted_dict)

Выход:

Сортировка({'a': 1, 'b': 2, 'c': 3, 'd': 4})

Использование класса и функции

Примеры:

Ввод:
{"b": 2, "c": 3, "a": 1,"d":4} 
Выход:
{"a": 1, "b": 2, "c": 3,"d":4} 
class SortedDisplayDict(dict):
	def __str__(self):
		return "{" + ", ".join("%r: %r" % (key, self[key]) for key in sorted(self)) + "}"


# Initialising dictionary and calling class
my_dict = SortedDisplayDict({"b": 2, "c": 3, "a": 1,"d":4})

# Printing dictionary
print(my_dict)

Выход:

{"a": 1, "b": 2, "c": 3, "d": 4} 

Обратная сортировка словаря по ключам

Примеры:

Ввод:
my_dict = {"b": 2, "c": 3, "a": 1,"d":4} 
Выход:
Отсортированным словарем является : ['a','b','c','d']
# Initialising a dictionary
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}

# Reverse sorting a dictionary
sorted_dict = sorted(my_dict, reverse=True)

# Printing dictionary
print("Sorted dictionary is :")

for k in sorted_dict:
print(k,':',my_dict[k])

Выход:

Отсортированным словарем является : d : 4 c : 3 б : 2 ответ : 1