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

如何使用len()函数对Python字典按值的长度排序?

按字典值的元素数量排序Python字典

问题背景

你有如下Python字典,值为集合类型,希望按每个值的元素数量降序排序:

mydict = {
    4: {'K', 'H'},
    2: {'Y', 'X', 'Q', 'U'},
    8: {'A', 'T', 'S'},
}

之前尝试的sorted([(value,key) for (key,value) in mydict.items()])无法实现需求,因为该代码是按集合本身的内容排序,而非集合的元素数量。

解决方案

利用Python 3.7+字典保留插入顺序的特性,结合sorted()函数指定排序依据为值的长度,即可实现目标:

# 按值的元素数量降序排序
mydict = {
    4: {'K', 'H'},
    2: {'Y', 'X', 'Q', 'U'},
    8: {'A', 'T', 'S'},
}

sorted_dict = dict(sorted(mydict.items(), key=lambda item: len(item[1]), reverse=True))
print(sorted_dict)

代码说明

  • mydict.items() 将字典转换为键值对元组的可迭代对象
  • key=lambda item: len(item[1]) 明确排序规则:以每个键值对中值的长度作为排序依据
  • reverse=True 设置为降序排序(与预期输出顺序一致)
  • dict() 将排序后的元组列表重新转换为字典,Python 3.7+会保留排序后的顺序

输出结果

运行代码后将得到预期的排序结果:

{
    2: {'Y', 'X', 'Q', 'U'},
    8: {'A', 'T', 'S'},
    4: {'K', 'H'},
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:49:54