Итерация по словарю (что и делает функция sorted
) даст вам только его ключи:
>>> sorted(mydict)
[u'den', u'jaime', u'jon', u'rob']
Вместо этого вы хотите отсортировать и ключи, и значения - для этого выбудет использовать mydict.items()
(или mydict.iteritems()
, что более эффективно при больших значениях):
>>> sorted(mydict.items())
[(u'den', 26), (u'jaime', 31), (u'jon', 30), (u'rob', 42)]
Тогда ваш код будет работать так, как ожидалось:
>>> from operator import itemgetter
>>> sorted(mydict.items(), key = itemgetter(1))
[(u'den', 26), (u'jon', 30), (u'jaime', 31), (u'rob', 42)]
Вы также можете захотетьсортировать по ключу dict в качестве вторичного значения сортировки, если несколько ключей имеют одинаковое значение:
>>> mydict={u'a': 1, 'z': 1, 'd': 1}
>>> sorted(mydict.items(), key = itemgetter(1))
[(u'a', 1), ('z', 1), ('d', 1)]
>>> sorted(mydict.items(), key = itemgetter(1, 0))
[(u'a', 1), ('d', 1), ('z', 1)]