You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何对键为元组的字典按值排序并获取对应键

Python元组键字典按值排序实现方法

不管字典的键是什么类型(包括元组),按值排序的核心逻辑都是指定排序维度为字典的值,结合Python版本特性保留排序顺序即可。

具体实现(Python 3.7+,原生字典保序)

Python 3.7及以上版本的原生字典默认保留键值对的插入顺序,直接对字典项排序后重构字典就能得到预期结果:

# 定义原始示例字典
origin_dict = {(1,1): 25, (1,2): 36, (1,3): 21, (2,1): 45, (2,2): 87, (2,3): 70}

# 按值升序排序,生成新的有序字典
sorted_dict = dict(sorted(origin_dict.items(), key=lambda kv: kv[1]))

代码逻辑说明:

  • origin_dict.items() 生成所有(键, 值)格式的元组序列,键为元组的特性不会干扰排序流程
  • sorted()的key参数传入匿名函数,指定取每个键值对的第2个元素(也就是字典的值)作为排序依据,默认升序排序不需要额外参数
  • 外层dict()将排序完成的键值对序列转为字典,自动保留排序后的顺序

运行后打印sorted_dict就能得到期望结果:

{(1, 3): 21, (1, 1): 25, (1, 2): 36, (2, 1): 45, (2, 3): 70, (2, 2): 87}

单独获取排序后对应的键

如果不需要保留完整字典,只需要拿到按值排序后的元组键列表,直接用列表推导式提取即可:

sorted_keys = [kv[0] for kv in sorted(origin_dict.items(), key=lambda x: x[1])]

运行后sorted_keys的结果为:

[(1, 3), (1, 1), (1, 2), (2, 1), (2, 3), (2, 2)]

低版本Python兼容方案(3.7以下)

Python 3.7之前的原生字典不保留插入顺序,如果需要固定排序后的键值映射关系,可以用标准库的OrderedDict存储结果:

from collections import OrderedDict
sorted_dict = OrderedDict(sorted(origin_dict.items(), key=lambda kv: kv[1]))

内容的提问来源于stack exchange,提问作者Azadeh Farsi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:18:46