2016-06-12 2 views
0

Вот дикты домашних животных и сколько их.Python - Печать элементов из дикта, отсортированных по значению

{"Birds" : 2, "Cats" : 3, "Dogs" : 4} 

Я хочу напечатать элементы, упорядоченные по наибольшему числу того же домашнего животного к наименьшему числу того же домашнего животного, или наоборот.

Желаемый результат:

('Dogs', 4) 
('Cats', 3) 
('Birds', 2) 

И

('Birds', 2) 
('Cats', 3) 
('Dogs', 4) 

Как это можно сделать?

Я не хочу ничего импортировать.

ответ

0

Использование встроенной sorted функции с помощью специальной рейтинговой функции и reverse=True аргумента:

for item in sorted(dict.items(), key=lambda x: x[1], reverse=True): 
    print(item) 

Ключ от lambda x: -x[1] должен также работать (без обратного аргумента).

0

с выражением лямбда x[1] обозначает значения, x[0] для ключей в ключевой стоимости пары из словаря.

sorted(d.items(), key=lambda x: x[1], reverse=True) 
sorted(d.items(), key=lambda x: x[0]) 

без лямбда выраж, operator.itemgetter делает то же самое:

from operator import itemgetter 

sorted(d.items(), key=itemgetter(1), reverse=True) 
sorted(d.items(), key=itemgetter(0)) 
0

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

mydict = {"Birds" : 2, "Cats" : 3, "Dogs" : 4} 
def sortDict(dictionary): 
    sorted_values = sorted(dictionary.values()) 
    sorted_keys = sorted(dictionary.keys()) 
    #sorted_values.reverse() 
    #sorted_keys.reverse() 
    for key, value in zip(sorted_keys, sorted_values): 
     print(key, value) 
sortDict(mydict) 

Просто удалите символы #, чтобы отменить результат.

 Смежные вопросы

  • Нет связанных вопросов^_^