Python如何按字典值降序排序,值相同时按键降序排序
解决方法
你只需要调整sorted函数的排序规则,把原来仅按频率值降序排序的key,修改为返回*(频率值, 键)*的元组即可。当reverse=True时,排序逻辑会自动优先按频率降序排列,频率相同的情况下自动按键的大小降序排列,刚好匹配需求。
修改后的完整代码如下:
a = [1,1,1,11,2,2,2,2,2,3,3,3,3,4,4,4,4,8,11,8,8,5,11,7,7,7,7,7,] freq = dict() for i in a : freq[i] = freq.get(i, 0) +1 # 仅修改排序的key参数即可 fsort = dict(sorted(freq.items(), key=lambda item:(item[1], item[0]), reverse=True)) print(fsort)
运行后输出结果和预期完全一致:
{7: 5, 2: 5, 4: 4, 3: 4, 11: 3, 1: 3, 8: 3, 5: 1}
内容的提问来源于stack exchange,提问作者Umesh N
相关产品推荐
相关产品推荐

