首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在循环槽嵌套列表中合并和汇总项目

在循环槽嵌套列表中合并和汇总项目
EN

Stack Overflow用户
提问于 2022-07-24 12:54:01
回答 1查看 58关注 0票数 1

需要您的帮助,解决strugle与列表过滤,合并和总结。我的输入参数:

  • 嵌套列表结构p0-n、p1-n、p2-n、q3、q4、q5 n-num
  • 项用于过滤和合并(p0和p1和p2)
  • (q3、q4、q5),条件是循环子列表中的三个控制项(p0、p1、q5)都是相同的。并合并到一个常见的嵌套列表中。

样本列表(in_list):

代码语言:javascript
复制
    in_list = [
                  ['p0-1', 'p1-1', 'p2-1', 1, 1, 2], 
                  ['p0-1', 'p1-1', 'p2-1', 2, 1, 1], 
                  ['p0-1', 'p1-1', 'p2-1', 1, 2, 1],

                  ['p0-2', 'p1-1', 'p2-1', 1, 1, 1], 
                  ['p0-2', 'p1-2', 'p2-1', 1, 1, 1], 
                  ['p0-2', 'p1-1', 'p2-2', 1, 1, 1]
              ]

我的变体(我在这里找到的)我现在得到的是:

代码语言:javascript
复制
    out_list = [[k, sum(q1 for p1, p2, p3, q1, q2, q3 in g)] 
                for k, g in groupby(sorted(in_list), key=itemgetter(0, 1, 2))]

我的结果(out_list):

代码语言:javascript
复制
    print(out_list)

    [
        [('p0-1', 'p1-1', 'p2-1'), 4], 
        [('p0-2', 'p1-1', 'p2-1'), 1], 
        [('p0-2', 'p1-1', 'p2-2'), 1],   
        [('p0-2', 'p1-2', 'p2-1'), 1]
    ]

这种理解几乎可以满足我的需要,但只总结了一个q1 (或q2或q3)。我试图插入q2,q3到这个理解中,但没有成功。是否可以同时对q1、q2和q3的理解进行修改?或者可能存在更简单的方法来实现我所需要的?

理想结果列表(out_list):

代码语言:javascript
复制
    [
        ['p0-1', 'p1-1', 'p2-1', 4, 4, 4], 
        ['p0-2', 'p1-1', 'p2-1', 1, 1, 1], 
        ['p0-2', 'p1-2', 'p2-1', 1, 1, 1], 
        ['p0-2', 'p1-1', 'p2-2', 1, 1, 1]
    ]

提前感谢并感谢任何有用的建议和帮助。

EN

回答 1

Stack Overflow用户

发布于 2022-07-24 15:28:57

试试itertools.tee

代码语言:javascript
复制
in_list = [
    ["p0-1", "p1-1", "p2-1", 1, 1, 2],
    ["p0-1", "p1-1", "p2-1", 2, 1, 1],
    ["p0-1", "p1-1", "p2-1", 1, 2, 1],
    ["p0-2", "p1-1", "p2-1", 1, 1, 1],
    ["p0-2", "p1-2", "p2-1", 1, 1, 1],
    ["p0-2", "p1-1", "p2-2", 1, 1, 1],
]

from itertools import groupby, tee
from operator import itemgetter

out = []
for k, g in groupby(sorted(in_list), key=itemgetter(0, 1, 2)):
    grps = tee(g, 3)
    out.append([*k, *(sum(v[i] for v in g) for i, g in enumerate(grps, 3))])

print(out)

指纹:

代码语言:javascript
复制
[
    ["p0-1", "p1-1", "p2-1", 4, 4, 4],
    ["p0-2", "p1-1", "p2-1", 1, 1, 1],
    ["p0-2", "p1-1", "p2-2", 1, 1, 1],
    ["p0-2", "p1-2", "p2-1", 1, 1, 1],
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73098582

复制
相关文章

相似问题

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