python - 如何在 Python 中对嵌套字典进行 2 次排序?
问题描述
我有一本字典,其中有另一本字典作为值。如何首先按键(升序)排序,然后按第二个字典的值(降序)排序?
my_dict = {'B':{'contest':30, 'contest_two':50, 'contest_three':40}
'A':{'contest_four':50, 'contest_five':60, 'contest_six':70}}
我想得到这个:
my_dict = {'A':{'contest_six':70, 'contest_five':60, 'contest_four':50}
'B':{'contest_two':50, 'contest_three':40, 'contest':30 }}
我试过这个my_dict = dict(sorted(my_dict.items(), key=lambda x: (x[0],x[1].values())))
,但显然它没有用。
解决方案
您的设计中有一个焦点问题:您声称您只对一个 dict 进行排序,但您想要的输出对所有三个进行排序:my_dict、my_dict['A'] 和 my_dict['B']。您必须sorted
在两个级别上调用:
{letter: {contest: score
for contest, score in
sorted(sub_dict.items(), key=lambda val: val[1], reverse=True)
} for letter, sub_dict in sorted(my_dict.items(), key=lambda val: val[0])
}
推荐阅读
- typescript - Karma 测试命令行输出中的两个不同的秒值是什么意思?
- spring - 让 Tomcat 服务器显示页面的问题
- java - 返回 Excel 的 SpringBoot API 的错误“没有预设 Content-Type 'null' 的 [class [B] 的转换器””
- r - 如何过滤匹配多个值的组?
- java - 无法使用 [class io.appium.java_client.android.AndroidDriver] 注入 @Test 注释方法
- c++ - C++ 中的无限循环永远阻塞互斥锁
- spring-data-jpa - Spring JPA - 一对一但保留历史记录
- javascript - 在 nodejs 中查找传递给 CLI 的文件/文件夹的类型
- android-studio - 如何通过Log调试AdMob中介的实现?
- r - 如何使用基于给定数据集的函数创建分层直方图?