python - 按子字典的值对字典字典进行排序/排序
问题描述
我有一本字典,其中的值也是字典。我想通过值字典的值(在示例中按日期)对主字典的键/值进行排序。
例子:
a = {
1: {'Text': 'Test1', 'Date': '2021-05-11'},
2: {'Text': 'Test2', 'Date': '2021-12-12'},
3: {'Text': 'Test3', 'Date': '2021-01-01'}
}
有序对象应如下所示:
a = {
3: {'Text': 'Test3', 'Date': '2021-01-01'},
1: {'Text': 'Test1', 'Date': '2021-05-11'},
2: {'Text': 'Test2', 'Date': '2021-12-12'}
}
我设法用字典列表做到了这一点:
a = [
{'ID': 1, 'Text': 'Test1', 'Date': '2021-05-11'},
{'ID': 2, 'Text': 'Test2', 'Date': '2021-12-12'},
{'ID': 3, 'Text': 'Test3', 'Date': '2021-01-01'},
]
a = sorted(a, key=lambda k: k['Date'])
但是我无法用字典来弄清楚。也许有人可以指出我正确的方向。
提前致谢。坦率
解决方案
您需要使用a.items()
然后将密钥用作key=lambda x:x[1]['Date']
. 的第二个元素x
是价值。
>>> a
{1: {'Text': 'Test1', 'Date': '2021-05-11'}, 2: {'Text': 'Test2', 'Date': '2021-12-12'}, 3: {'Text': 'Test3', 'Date': '2021-01-01'}}
>>> dict(sorted(a.items(), key=lambda x:x[1]['Date']))
{3: {'Text': 'Test3', 'Date': '2021-01-01'}, 1: {'Text': 'Test1', 'Date': '2021-05-11'}, 2: {'Text': 'Test2', 'Date': '2021-12-12'}}
推荐阅读
- go - go run 命令没有提供足够的信息来调试
- javascript - 机器人加入公会的所有语音频道并播放文件
- php - 使用 docker 和数据库设置/运行项目
- angular - Angular - 在派生类的构造函数中访问“this”之前必须调用“super”
- python - 为什么python中的tuple()函数返回很多括号
- entity-framework - 如何使用实体框架最好地处理微服务中的共享实体?
- angular - 单击事件顶部滚动时的角材料垫手风琴不起作用
- spring-boot - Springboot H2 问题
- php - Laravel 5.6 雄辩的 whereDate 和 WhereRaw 错误
- sql - 获取重复记录