Python中如何对字典中值相同的键进行排序?
解决方案
要实现这个需求,你可以按照以下步骤操作(适用于Python 3.7及以上版本,该版本起字典会保留插入顺序):
- 按值分组:把字典中值相同的键归类到一起
- 组内排序:对每个组里的键,先转换为整数再进行升序排序,之后转回字符串
- 重组字典:按值的大小顺序,将排序后的键值对重新存入字典
代码实现
from collections import defaultdict my_dict = {'100': 1, '90': 9, '180': 9, '65': 11, '56': 11, '74': 11} # 按值分组 value_groups = defaultdict(list) for key, val in my_dict.items(): value_groups[val].append(key) # 对每个组内的键按整数大小排序 sorted_groups = {} for val, keys in value_groups.items(): sorted_keys = sorted(keys, key=lambda x: int(x)) sorted_groups[val] = sorted_keys # 重组有序字典 result = {} for val in sorted(sorted_groups.keys()): for key in sorted_groups[val]: result[key] = val print(result)
输出结果
{'100': 1, '180': 9, '90': 9, '56': 11, '65': 11, '74': 11}
说明
- 用
defaultdict分组可以快速把相同值的键聚集到一起 sorted函数的key=lambda x: int(x)参数,确保按键的数值大小排序,而非字符串字典序,保证排序逻辑符合数值认知- 最后按值的升序遍历分组,确保整体键值对顺序和预期匹配
内容的提问来源于stack exchange,提问作者LuisFigas
相关产品推荐
相关产品推荐

