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

如何基于另一个字典的score值对Python字典进行排序

Python字典按指定规则排序实现方案

Python 3.7及以上版本原生支持字典保留插入顺序,你可以直接用sorted函数配合自定义排序规则实现需求,具体如下:


完整实现代码

# 给定的原始字典
dict1 = {'key10': {'fail_pass': 1, 'score': 29.5}, 'key20': {'fail_pass': 0, 'score': 37.25}, 'key30': {'fail_pass': 0, 'score': 25.75}, 'key60': {'fail_pass': 1, 'score': 225.75}, 'key70': {'fail_pass': 1, 'score': 25.25}, 'key170': {'fail_pass': 1, 'score': 0.25}}
dict2 = {'key10': 1, 'key20': 1, 'key60': 1}

# 按dict1对应键的score从高到低排序dict2
sorted_dict2 = dict(sorted(
    dict2.items(),
    key=lambda x: dict1[x[0]]['score'],
    reverse=True
))

# 输出验证
print(sorted_dict2)

运行后输出结果和预期完全一致:{'key60': 1, 'key20': 1, 'key10': 1}


逻辑说明

  • 调用dict2.items()获取dict2所有键值对的可迭代对象
  • sorted函数的key参数传入lambda表达式,指定排序依据为dict1中对应键的score值
  • reverse=True设置排序规则为降序,即score越高排序越靠前
  • 最后将sorted返回的已排序元组列表转换为字典,即可得到保留排序顺序的结果字典

容错优化(可选)

如果存在dict2的键不在dict1中的场景,可以调整排序规则避免抛出KeyError:

sorted_dict2 = dict(sorted(
    dict2.items(),
    # 不存在的键默认score为0,排在最后
    key=lambda x: dict1.get(x[0], {}).get('score', 0),
    reverse=True
))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:15:03