这是一本关于宠物的词典及其中有多少。
{"Birds" : 2, "Cats" : 3, "Dogs" : 4}
我想打印按相同宠物的最大数量排序的项目到相同宠物的最小数量,反之亦然。
期望的输出:
('Dogs', 4)
('Cats', 3)
('Birds', 2)
和
('Birds', 2)
('Cats', 3)
('Dogs', 4)
怎么可以这样做?
我不想导入任何东西。
答案 0 :(得分:1)
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)
只需删除#
个字符即可反转结果。