python 如何按值对字典进行排序,但如果值相等,它将按键排序

gtlvzcf8  于 2023-05-05  发布在  Python
关注(0)|答案(2)|浏览(186)

我想按值对字典进行排序,但如果值 相等,它将按键排序:
例如:

average_grades={mitra:19,sara:20,mayk:19.5,jorj:19}
2ekbmq32

2ekbmq321#

{i[0]:i[1] for i in sorted(average_grades.items(), key= lambda x: (x[1],x[0]))}

Sorted函数接受一个可以排序的键,第一层是升序的值,因此x[1],第二层是升序的键,因此x[0]。如果你必须按降序对键进行排序,那么你应该写-x[0]。

pcww981p

pcww981p2#

average_grades={'mitra':19,'sara':20,'mayk':19.5,'jorj':19}

您可以按以下方式排序:

from collections import namedtuple

average_grades={'mitra':19,'sara':20,'mayk':19.5,'jorj':19}

# Make the dict more specific
name_grade = namedtuple('name_grade', 'name, grade')
average_mapper = map(lambda key : name_grade(key, average_grades[key]), average_grades)

# Sort enter code here the dict by the grade then the name
sorted_dict = {key : value for key, value in sorted(average_mapper, key=lambda info: (info.grade, info.name))}
print(sorted_dict)
# {'jorj': 19, 'mitra': 19, 'mayk': 19.5, 'sara': 20}

相关问题