В Python, как вы можете легко получить отсортированные элементы из словаря?
Словари в отличие от списков не упорядочены (и не имеют атрибута 'sort'). Поэтому вы не можете полагаться на получение предметов в том же порядке, когда они были добавлены.
Каков самый простой способ прокрутки словаря, содержащего строки, в качестве значения ключа и получения их в порядке возрастания по ключу?
Например, у вас было это:
d = {'b' : 'this is b', 'a': 'this is a' , 'c' : 'this is c'}
Я хочу напечатать связанные значения в следующей последовательности, отсортированной по ключу:
this is a
this is b
this is c
Ответы
Ответ 1
Вы имеете в виду, что вам нужны значения, отсортированные по значению ключа?
В этом случае это должно сделать это:
for key in sorted(d):
print d[key]
ИЗМЕНИТЬ: изменено на использование сортировки (d) вместо сортировки (d.keys()), спасибо Eli!
Ответ 2
Или короче,
for key, value in sorted(d.items()):
print value
Ответ 3
Этот фрагмент сделает это. Если вы собираетесь делать это часто, вы можете захотеть сделать метод "sortkeys" или сделать что-то более удобным для глаз.
keys = list(d.keys())
keys.sort()
for key in keys:
print d[key]
Изменить: dF решение лучше - я забыл все о sorted().
Ответ 4
>>> d = {'b' : 'this is b', 'a': 'this is a' , 'c' : 'this is c'}
>>> for k,v in sorted(d.items()):
... print v, k
...
this is a a
this is b b
this is c c
Ответ 5
for key in sorted(d):
print d[key]
Ответ 6
Вы также можете отсортировать словарь по значению и управлять порядком сортировки:
import operator
d = {'b' : 'this is 3', 'a': 'this is 2' , 'c' : 'this is 1'}
for key, value in sorted(d.iteritems(), key=operator.itemgetter(1), reverse=True):
print key, " ", value
Вывод:
b это 3
a это 2
c это 1
Ответ 7
d = {'b' : 'this is b', 'a': 'this is a' , 'c' : 'this is c'}
ks = d.keys()
ks.sort()
for k in ks:
print "this is " + k
Ответ 8
Вы имеете в виду "отсортированный" вместо "заказанный"? Кажется, ваш вопрос направлен на сортировку словаря, а не на его упорядочение. Если вы имеете в виду "заказ", вы можете использовать OrderedDict из модуля коллекций. Эти словари помнят порядок ввода пар ключ/значение:
from collections import OrderedDict
Справочная информация: https://docs.python.org/2/library/collections.html#collections.OrderedDict