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

Python如何按嵌套字典内层值的降序生成新的内层数字键

可行实现方案

可以直接通过排序+遍历的方式生成目标字典,核心是对内层字典的键值对按值做降序排列后,按顺序生成从1开始的排名作为新内层字典的键即可。

实现代码

# 输入字典
dict1 = {'AB':{'QB':0.11,'CD':0.10,'DE':0.4},'CD':{'FE':0.33,'TEW':0.22,'FEW':0.99,'FEQ':0.45}}

output = {}
for outer_k, inner_map in dict1.items():
    # 按内层值降序排序键值对,值越大排位越靠前
    sorted_pairs = sorted(inner_map.items(), key=lambda item: item[1], reverse=True)
    # 组装带排名的内层结构
    ranked_map = {}
    for idx, (k, v) in enumerate(sorted_pairs, start=1):
        ranked_map[idx] = {k: v}
    output[outer_k] = ranked_map

运行结果

执行上述代码后得到的output和给出的期望输出完全一致:

{
    'AB': {1: {'DE': 0.4}, 2: {'QB': 0.11}, 3: {'CD': 0.1}},
    'CD': {1: {'FEW': 0.99}, 2: {'FEQ': 0.45}, 3: {'FE': 0.33}, 4: {'TEW': 0.22}}
}

如果偏好更简洁的写法,也可以用嵌套字典推导式实现完全相同的逻辑:

output = {
    ok: {
        rank: {k:v}
        for rank, (k,v) in enumerate(sorted(iv.items(), key=lambda x:x[1], reverse=True), 1)
    }
    for ok, iv in dict1.items()
}

注意:Python 3.7+版本字典会默认保留插入顺序,排序后生成的内层字典遍历顺序和排名顺序一致;如果是更低版本,需要使用collections.OrderedDict来保证顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:45:32