Python如何将数据库导出的数据一级级分类?

发布于 2022-09-04 01:54:08 字数 2378 浏览 24 评论 0

lst = [{'time': '2016-10-25', 'id': 'a1', 'type': '1', 'details': 'xxx'},
       {'time': '2016-10-25', 'id': 'a1', 'type': '1', 'details': 'xxx'},
       {'time': '2016-10-25', 'id': 'a2', 'type': '1', 'details': 'xxx'},
       {'time': '2016-10-25', 'id': 'a2', 'type': '2', 'details': 'xxx'},
       {'time': '2016-10-26', 'id': 'a1', 'type': '1', 'details': 'xxx'},
       {'time': '2016-10-26', 'id': 'a1', 'type': '2', 'details': 'xxx'},
       {'time': '2016-10-26', 'id': 'a2', 'type': '1', 'details': 'xxx'},
       {'time': '2016-10-26', 'id': 'a2', 'type': '2', 'details': 'xxx'},
       {'time': '2016-10-27', 'id': 'a1', 'type': '1', 'details': 'xxx'},
       {'time': '2016-10-27', 'id': 'a1', 'type': '1', 'details': 'xxx'},
       {'time': '2016-10-27', 'id': 'a2', 'type': '2', 'details': 'xxx'},
       {'time': '2016-10-27', 'id': 'a2', 'type': '2', 'details': 'xxx'},
       {'time': '2016-10-27', 'id': 'a2', 'type': '3', 'details': 'xxx'},
       {'time': '2016-10-27', 'id': 'a2', 'type': '3', 'details': 'xxx'}]

结果:

lst = [{'time': '2016-10-25', 'data': [{'id': 'a1', 'data': [{'type': '1', 'data': [{'details': 'xxx'}, {'details': 'xxx'}]}]},
                                       {'id': 'a2', 'data': [{'type': '1', 'data': [{'details': 'xxx'}]},
                                                             {'type': '2', 'data': [{'details': 'xxx'}]}]}]},
       {'time': '2016-10-26', 'data': [{'id': 'a1', 'data': [{'type': '1', 'data': [{'details': 'xxx'}]},
                                                             {'type': '2', 'data': [{'details': 'xxx'}]}]},
                                       {'id': 'a2', 'data': [{'type': '1', 'data': [{'details': 'xxx'}]},
                                                             {'type': '2', 'data': [{'details': 'xxx'}]}]}]},
       {'time': '2016-10-27', 'data': [{'id': 'a1', 'data': [{'type': '1', 'data': [{'details': 'xxx'}, {'details': 'xxx'}]}]},
                                       {'id': 'a2', 'data': [{'type': '2', 'data': [{'details': 'xxx'}, {'details': 'xxx'}]},
                                                             {'type': '3', 'data': [{'details': 'xxx'}, {'details': 'xxx'}]}]}]}]

就是对列表中的数据进行一级级分类,原始数据是随机的,先按time分类,后面按id,然后type分类,每一级的数据都放在data的下,data是一个列表

真实的数据量比较大,怎么高效写这段程序?Python代码,谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谁人与我共长歌 2022-09-11 01:54:08
import itertools

def group_by(l, key, data_callback):
    return [{key: k, 'data': data_callback(g)} for k, g in itertools.groupby(l, key=lambda x: x[key])]
    
groupby(lst, 'time',
    lambda l: group_by(l, 'id',
        lambda l: group_by(l, 'type',
            lambda l: [{'details': x['details']} for x in l])))
在巴黎塔顶看东京樱花 2022-09-11 01:54:08

是 SQL 语句问题吧,如果不是那么你得赋值很多次变量,互换值。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文