选项1
这是一种更现代的解决方案,只适用于python3.x
,这是问题所采用的相同方法。而不是使用t[::-1]
作为索引,你需要使用t: (-t[1], t[0])
。-t[1]
将名称按升序排序,因为它已经被取反了。t[0]
将键按降序排序。
以下是代码:
dictionary = {"Sophie": 23, "Alfred": 23, "Zelda":22, "Betty":23}
reversed_dict= dict(sorted(dictionary.items(), key=lambda t: (-t[1], t[0])))
print(reversed_dict)
输出:
{'Alfred': 23, 'Betty': 23, 'Sophie': 23, 'Zelda': 22}
选项2
这是更加便携的解决方案,适用于所有版本的Python。此方法要求您在开始之前导入operator
库。
sorted(dictionary.items(), key=operator.itemgetter(0))
按升序对名称进行排序,然后sorted(reversed_dict, key=operator.itemgetter(1), reverse=True))
按降序对键进行排序。
以下是代码:
import operator
dictionary = {"Sophie": 23, "Alfred": 23, "Zelda":22, "Betty":23}
reversed_dict = sorted(dictionary.items(), key=operator.itemgetter(0))
reversed_dict = dict(sorted(reversed_dict, key=operator.itemgetter(1), reverse=True))
print(reversed_dict)
输出:
{'Alfred': 23, 'Betty': 23, 'Sophie': 23, 'Zelda': 22}