python dict字典 value 排名

本文介绍了一种针对Python字典按值进行排名的方法,并通过示例展示了如何实现并列排名,适用于需要对数据结构按其值进行快速排名的场景。

经常使用到的一个方法是对字典类型的数据结构根据value来进行排名,注意是排名不是排序。所以记录一下,可以供后来者使用。

x = {'a':2.1, 'b':2.1, 'c':5.2, 'd':6}
r = {key: rank for rank, key in enumerate(sorted(x.values(),reverse=True), 1)}
print(r)
# {2.1: 4, 5.2: 2, 6: 1}
rr = {k: r[v] for k,v in x.items()}
print(rr)
# {'b': 4, 'a': 4, 'd': 1, 'c': 2}  

所以可以看出d排第一,c排第二,a和b并列排第四。

————————————EOF——————————–

### 如何按照ValuePython字典进行排序Python中,可以通过`sorted()`函数配合`lambda`表达式来实现基于字典值的排序。具体操作是利用`items()`方法获取字典项列表,并指定`key`参数为一个返回每个项目第二个元素(即值)的匿名函数。 对于给定的一个字典: ```python data = { 'apple': 3, 'orange': 2, 'banana': 5, 'cherry': 1 } ``` 可以使用下面的方式对其进行升序排列[^3]: ```python # 使用lambda表达式按值进行排序 sorted_by_value_asc = sorted(data.items(), key=lambda item: item[1]) print("Sorted by Value (Ascending):", sorted_by_value_asc) # 如果想要降序,则可以在sorted()中加入reverse=True参数 sorted_by_value_desc = sorted(data.items(), key=lambda item: item[1], reverse=True) print("Sorted by Value (Descending):", sorted_by_value_desc) ``` 上述代码先展示了如何创建一个简单的水果数量映射表作为例子数据集;接着分别实现了两种不同顺序下的排序逻辑——一种是从低到高,另一种则是相反方向。最后将结果以元组形式展示出来[(key,value)]而不是直接转回字典类型,因为这样能更清晰地看到原始键及其对应的已排序后的数值。 如果确实需要获得一个新的有序字典对象而非仅仅是查看排序效果的话,在完成上述任一排序过程之后还可以进一步调用内置的`dict()`构造器将其转换成标准字典格式: ```python # 将排序结果转换为字典并输出 sorted_dict_by_value_asc = dict(sorted_by_value_asc) print("Converted Sorted Dict by Value Ascending:", sorted_dict_by_value_asc) sorted_dict_by_value_desc = dict(sorted_by_value_desc) print("Converted Sorted Dict by Value Descending:", sorted_dict_by_value_desc) ``` 需要注意的是,由于普通字典本身并不保持任何特定顺序,因此当把已经排好序的结果重新封装进新的字典里时可能会丢失原有的次序关系除非是在支持保序特性的版本环境中运行此段程序(Python 3.7+)。而在这些较新版本下,默认情况下字典会记住插入项目的先后位置从而使得最终呈现出来的视图依旧保持着预期中的有序状态[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值