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

如何基于级联列表值对Python OrderedDict进行多级排序

OrderedDict 多优先级排序实现方案

直接使用Python内置的sorted()函数即可实现多维度级联排序,无需编写复杂的嵌套循环逻辑:

from collections import OrderedDict

myOD = OrderedDict(
    adultMale1=[50, 'male', 'grey'], 
    babyFemale=[1, 'female', 'red'], 
    teenMale=[13, 'male', 'blonde'], 
    teenFemale=[13, 'female', 'red'], 
    adultMale2=[50, 'male', 'blonde']
)

# 按(年龄升序 > 性别升序 > 发色升序)优先级排序
sorted_items = sorted(myOD.items(), key=lambda x: (x[1][0], x[1][1], x[1][2]))
myNewOD = OrderedDict(sorted_items)

print myNewOD.keys()
# 输出结果:['babyFemale', 'teenFemale', 'teenMale', 'adultMale2', 'adultMale1']

原理解释

  • sorted()的key参数接受元组类型的返回值,排序时会按元组元素顺序依次比对,优先级和元组的元素顺序完全对应,刚好匹配你的多优先级需求
  • 字符串默认按ASCII编码顺序升序排列,female排序优先级高于male,blonde排序优先级高于grey,和你期望的排序结果一致
    如果需要调整某一维度为降序,数值类型可以直接在对应字段前加负号,例如要按年龄降序排序,可以修改key为lambda x: (-x[1][0], x[1][1], x[1][2])。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:06:03