Python - 按值排序打印dict中的项目

时间:2016-06-12 08:20:37

标签: sorting python-3.x dictionary key-value

这是一本关于宠物的词典及其中有多少。

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

我想打印按相同宠物的最大数量排序的项目到相同宠物的最小数量,反之亦然。

期望的输出:

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

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

怎么可以这样做?

我不想导入任何东西。

3 个答案:

答案 0 :(得分:1)

带有lambda表达式x[1]

代表值,x[0]代表字典中键值对中的键。

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

没有lambda expr,operator.itemgetter做同样的事情:

from operator import itemgetter

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

答案 1 :(得分:0)

使用带有特殊排名函数和reverse=True参数的内置for item in sorted(dict.items(), key=lambda x: x[1], reverse=True): print(item) 函数:

lambda x: -x[1]

{{1}}的密钥也应该有效(没有反向参数)。

答案 2 :(得分: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)

只需删除#个字符即可反转结果。