Python函数:如何按照指定排序规则对字典进行排序?
发布时间:2023-06-04 05:45:11
在Python中,我们可以使用内置函数sorted()来对列表、元组和字典等对象进行排序。排序的规则可以通过key参数指定,key参数传递一个函数用于定制排序规则。在本篇文章中,我们将介绍如何按照指定排序规则对字典进行排序。
1. 按字典值升序排序
假设我们有一个字典,其中包含了学生的姓名和成绩信息:
score_dict = {'张三': 80, '李四': 90, '王五': 75, '赵六': 85}
现在我们想要按照成绩升序排序,可以使用如下代码实现:
sorted_dict = sorted(score_dict.items(), key=lambda x: x[1]) print(sorted_dict)
输出结果为:
[('王五', 75), ('张三', 80), ('赵六', 85), ('李四', 90)]
在这里,我们使用了sorted()函数对字典的items()方法返回的键-值对列表进行排序。key参数的值为一个lambda函数,该函数返回第二个元素(成绩)用于排序。
2. 按字典值降序排序
如果我们想要按照成绩降序排序,只需要将lambda函数改为返回元组的第二个元素的相反数即可:
sorted_dict = sorted(score_dict.items(), key=lambda x: -x[1]) print(sorted_dict)
输出结果为:
[('李四', 90), ('赵六', 85), ('张三', 80), ('王五', 75)]
3. 按字典键升序排序
除了按值排序,我们还可以按字典键进行排序。例如,我们有一个人名与年龄的字典:
age_dict = {'张三': 20, '李四': 18, '王五': 22, '赵六': 19}
现在我们想要按照人名升序排序,可以使用如下代码:
sorted_dict = sorted(age_dict.items(), key=lambda x: x[0]) print(sorted_dict)
输出结果为:
[('李四', 18), ('王五', 22), ('张三', 20), ('赵六', 19)]
在这里,我们使用了sorted()函数对字典的items()方法返回的键-值对列表进行排序。key参数的值为一个lambda函数,该函数返回 个元素(人名)作为排序依据。
4. 按字典键降序排序
同样地,如果我们想要按照人名降序排序,只需要将lambda函数改为返回元组的 个元素的相反数:
sorted_dict = sorted(age_dict.items(), key=lambda x: -x[0]) print(sorted_dict)
输出结果为:
[('赵六', 19), ('张三', 20), ('王五', 22), ('李四', 18)]
总结
以上就是按照指定排序规则对字典进行排序的方法。当我们需要按照字典键或值进行排序时,可以使用sorted()函数和lambda函数来排序。在这里需要注意的是,sorted()函数返回的是一个排好序的列表,而不是字典。如果想要获得排好序的字典,可以使用collections模块中的OrderedDict类。
