如何使用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
相关产品推荐
相关产品推荐

