python求助 小白最近遇到这样一个问题

cwmlow 2019-01-29 10:49:54
小白刚学python不久,最近遇到这样一个问题,如下:

dataA_list=[{id:1,status:1,name:项目1,money:1111},{id:2,status:1,name:项目2,money:2222},{id:3,status:1,name:项目3,money:3333}]

dataB_list=[{id:1,status:2,name:项目1,money:111},{id:2,status:2,name:项目2,money:222},{id:4,status:2,name:项目4,money:4444}]

dataC_list=[{id:5,status:3,name:项目5,money:5555},{id:3,status:3,name:项目3,money:33},{id:1,status:3,name:项目1,money:11}]

我想获得这样一个理想的数据集合,根据以上 name相同(当然id相同也可)和status下哪个money大的前提下就累加money最后输出如下

dataSUM_list=[{id:1,name:项目1,money:1222},{id:2,name:项目2,money:2444},{id:3,name:项目3,money:3366},,{id:4,name:项目4,money:4444},{id:5,name:项目5,money:5555}]

思路是什么呢,是要先转成字典根据键判断吗? 小白急求大佬解答一下
...全文
89 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cwmlow 2019-01-29
  • 打赏
  • 举报
回复
是不是把列表里的字典的values值转成列表再循环根据索引来解决吗?
ruancan 2019-01-29
  • 打赏
  • 举报
回复
思路是根据ID去重,去重的同时先把money求和,代码如下:

dataA_list = [{'id': 1, 'status': 1, 'name': '项目1', 'money': 1111},
              {'id': 2, 'status': 1, 'name': '项目2', 'money': 2222},
              {'id': 3, 'status': 1, 'name': '项目3', 'money': 3333}]

dataB_list = [{'id': 1, 'status': 2, 'name': '项目1', 'money': 111}, {'id': 2, 'status': 2, 'name': '项目2', 'money': 222},
              {'id': 4, 'status': 2, 'name': '项目4', 'money': 4444}]

dataC_list = [{'id': 5, 'status': 3, 'name': '项目5', 'money': 5555}, {'id': 3, 'status': 3, 'name': '项目3', 'money': 33},
              {'id': 1, 'status': 3, 'name': '项目1', 'money': 11}]


def the_sum(*params):
    result = {}
    for the_list in params:
        for the_dict in the_list:
            if the_dict['id'] not in result:
                result[the_dict['id']] = the_dict
                del result[the_dict['id']]['status']
            else:
                result[the_dict['id']]['money'] += the_dict['money']
    return [result[key] for key in result]


if __name__ == '__main__':
    print(the_sum(dataA_list, dataB_list, dataC_list))

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧