在Python中如何对一个字典(dict)的值进行排序

本文详细介绍了Python中的sorted()函数使用方法,对比了sort与sorted的区别,展示了如何使用lambda函数和operator模块进行复杂排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上代码

>>> xs = {'a': 4, 'b': 3, 'c': 2, 'd': 1}

>>> sorted(xs.items(), key=lambda x: x[1])
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]

或者

>>> import operator
>>> sorted(xs.items(), key=operator.itemgetter(1))
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]

 

关于Python sorted() 函数

sorted() 函数对所有可迭代的对象进行排序操作。

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

语法

sorted(iterable, cmp=None, key=None, reverse=False)

参数说明:

  • iterable — 可迭代对象。
  • cmp — 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
  • key — 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse — 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

返回值

返回重新排序的列表。

 

关于匿名函数lambda

lambda函数的语法只包含一个语句,如下:

lambda [arg1 [,arg2,.....argn]]:expression

示例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2;
 
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )

输出结果:

相加后的值为 :  30
相加后的值为 :  40

 

### 按字典排序并返回有序字典Python 中,可以利用 `collections.OrderedDict` 来创建一个保持顺序的字典。通过将已排序字典项传递给 `OrderedDict` 的构造函数,可以获得按特定顺序排列的字典[^1]。 以下是实现此功能的具体方法: #### 实现代码 ```python from collections import OrderedDict def sort_dict_by_value(input_dict, reverse=False): """ 根据字典对其进行排序,并返回一个有序字典 (OrderedDict) 参数: input_dict (dict): 输入的原始字典。 reverse (bool): 排序方向,默认为 False 表示升序;如果设置为 True,则表示降序。 返回: OrderedDict: 已排序的有序字典。 """ sorted_items = sorted(input_dict.items(), key=lambda item: item[1], reverse=reverse) ordered_dict = OrderedDict(sorted_items) return ordered_dict # 测试数据 example_dict = {'a': 3, 'b': 1, 'c': 2} # 调用函数 sorted_asc_dict = sort_dict_by_value(example_dict) # 升序 sorted_desc_dict = sort_dict_by_value(example_dict, reverse=True) # 降序 print("升序:", dict(sorted_asc_dict)) print("降序:", dict(sorted_desc_dict)) ``` #### 输出结果解释 上述代码会输出两个版本的排序结果: - **升序**: 从小到大排序后的字典。 - **降序**: 从大到小排序后的字典。 运行该代码后,得到如下输出: ``` 升序: {'b': 1, 'c': 2, 'a': 3} 降序: {'a': 3, 'c': 2, 'b': 1} ``` 在此过程中,`sorted()` 函数用于对输入字典中的项目进行排序,而 `lambda` 表达式指定了基于字典 (`item[1]`) 进行比较的标准[^2]。随后,这些排序后的键对被传入 `OrderedDict` 构造器以保留其顺序属性。 对于需要提取前 N 名的情况,可以在完成排序之后进一步筛选所需的条目[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值