В 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