Python如何将数据库导出的数据一级级分类?
高洛峰
高洛峰 2016-10-29 09:39:24
[Python讨论组]
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代码,谢谢


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔
import itertools

def group_by(l, key, data_callback):
    return [{key: k, 'data': data_callback(g)} for k, g in itertools.groupby(lst, 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])))


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号