嘿,我正在尝试按值对字典进行排序,从最高值到最低值。但是,我希望具有相同值的项按键排序
以下代码不起作用
dictionary = {"Sophie": 23, "Alfred": 23, "Zelda":22, "Betty":23}
sorted(dictionary.items(), key=lambda t: t[::-1])
输出:
[('Zelda', 22), ('Alfred', 23), ('Betty', 23), ('Sophie', 23)]
预期产出:
[('Alfred', 23), ('Betty', 23), ('Sophie', 23), ('Zelda', 22)]
按递减值排序,然后按键排序(按字母顺序)
选择1
这是一个更现代的解决方案,它只在
python3.x
中起作用,这与问题所采用的方法相同。您需要使用t: (-t[1], t[0])
而不是t[::-1]
作为索引。-t[1]
按升序对名称排序,因为它已被忽略t[0]
按降序对键进行排序。 代码如下:输出:
选择2
这是一个更具可移植性的解决方案,适用于所有版本的python。
sorted(dictionary.items(), key=operator.itemgetter(0))
按升序排列名称,然后sorted(reversed_dict, key=operator.itemgetter(1), reverse=True))
按降序排列键代码如下:
输出:
由于您希望使用一个键(值)按降序排序,另一个键(名称)按升序排序,因此简单地颠倒排序顺序是行不通的。相反,您应该构造一个值和名称的元组,并将值取反以按降序排序:
相关问题 更多 >
编程相关推荐