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

Python如何按值的出现频率从高到低排序字典

按值的出现频率排序字典

实现思路

要实现按值的出现频率从高到低排序字典,核心分为两步:

  1. 统计每个值在字典中的出现次数
  2. 以值的出现频率为第一排序依据(降序),同频率的键值对保持原字典中的出现顺序,对原字典的键值对进行排序

代码实现

from collections import Counter

# 原始输入数据
input_data = [{1: '100', 2: '102', 3: '101', 4: '100', 5: '102', 6: '100', 7: '102', 8: '101', 9: '100'}]
original_dict = input_data[0]

# 统计每个值的出现频率
value_freq = Counter(original_dict.values())

# 保存原字典的键顺序,用于同频率时保持原顺序
original_keys = list(original_dict.keys())

# 按值的频率降序排序,同频率则按原键的出现顺序排序
sorted_items = sorted(
    original_dict.items(),
    key=lambda item: (-value_freq[item[1]], original_keys.index(item[0]))
)

# 转换为字典并封装回列表
result = [dict(sorted_items)]
print(result)

代码说明

  • Counter(original_dict.values()):快速统计每个值的出现次数,返回一个键为值、值为对应频率的计数器对象
  • sorted函数的key参数:
    • -value_freq[item[1]]:用负号实现频率的降序排列(频率越高,排序越靠前)
    • original_keys.index(item[0]):当多个值的频率相同时,按照它们在原字典中的出现顺序排列,保证结果和示例一致
  • 最后将排序后的键值对列表转换为字典,再放回原列表结构中

运行代码后会输出你期望的结果:

[{1: '100', 4: '100', 6: '100', 9: '100', 2: '102', 5: '102', 7: '102', 3: '101', 8: '101'}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:43:12