Python Glossary English

все Python 3Словари (dict)понятие

Сортировка словаря

сортировка

sorted(d.items()) сортирует пары. key= задаёт критерий сортировки. Результат — список кортежей или новый словарь.

Синтаксис

sorted(d.items())  |  sorted(d.items(), key=lambda x: x[1])

sorted() возвращает список кортежей, а не словарь: чтобы снова получить dict, оберните результат в dict() — порядок сохранится, словарь помнит порядок вставки с версии 3.7. Сортировки «на месте» у dict нет вообще, есть только построение нового объекта. По умолчанию сравнение начинается с ключей, поэтому смешанные типы ключей (int рядом с str) дадут TypeError, а чтобы отсортировать по убыванию значения и разрешить ничьи по алфавиту, берут составной ключ вида (-значение, ключ).

Примеры

d = {'banana': 3, 'apple': 1, 'cherry': 2}
print(sorted(d.items()))
# → [('apple', 1), ('banana', 3), ('cherry', 2)]
print(sorted(d.items(), key=lambda x: x[1]))
# → [('apple', 1), ('cherry', 2), ('banana', 3)]
print(sorted(d.keys()))
# → ['apple', 'banana', 'cherry']
print(dict(sorted(d.items())))
# → {'apple': 1, 'banana': 3, 'cherry': 2} (по ключу)
print(dict(sorted(d.items(), key=lambda x: x[1], reverse=True)))
# → {'banana': 3, 'cherry': 2, 'apple': 1} (по значению убыв.)
print(sorted(d, key=d.get))
# → ['apple', 'cherry', 'banana']

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности