首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过汇总Python中的现有列表来创建新列表

通过汇总Python中的现有列表来创建新列表
EN

Stack Overflow用户
提问于 2021-08-05 07:18:08
回答 4查看 64关注 0票数 2

我在Python中有一个类似这样的列表:

代码语言:javascript
复制
my_list = [
            {"id":1,"symbol":"ABC","quantity":100},
            {"id":2,"symbol":"PQR","quantity":500},
            {"id":3,"symbol":"ABC","quantity":300},
            {"id":1,"symbol":"XYZ","quantity":320},
            {"id":3,"symbol":"PQR","quantity":800},
         ]

我想总结一个具有相似符号的量,并创建一个新的列表。new_list将如下所示:

代码语言:javascript
复制
new_list = [
             { "symbol":"ABC","total_quantity":400,"ids":"1 3"}
             { "symbol":"PQR","total_quantity":1300,"ids":"2 3"}
             { "symbol":"XYZ","total_quantity":320,"ids":"1"}
           ]

我是Python的新手,尝试过一些方法,但都不能工作。我可以尝试实现什么呢?

EN

Stack Overflow用户

发布于 2021-08-05 08:02:08

如果您更喜欢核心Python解决方案,您可以这样做:

代码语言:javascript
复制
my_list = [
            {"id":1,"symbol":"ABC","quantity":100},
            {"id":2,"symbol":"PQR","quantity":500},
            {"id":3,"symbol":"ABC","quantity":300},
            {"id":1,"symbol":"XYZ","quantity":320},
            {"id":3,"symbol":"PQR","quantity":800},
         ]

res = []
for sym in sorted(set([x['symbol'] for x in my_list])):
    tmp = {}
    tmp['symbol'] = sym
    tmp['ids'] = r' '.join([str(x['id']) for x in my_list if x['symbol'] == sym])
    tmp['total_quantity'] = sum([x['quantity'] for x in my_list if x['symbol'] == sym])
    res.append(tmp)
       
print(res)
#[{'symbol': 'ABC', 'total_quantity': 400, 'ids': '1 3'}, 
# {'symbol': 'PQR', 'total_quantity': 1300, 'ids': '2 3'}, 
# {'symbol': 'XYZ', 'total_quantity': 320, 'ids': '1'}]
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68662193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档