需要您的帮助,解决strugle与列表过滤,合并和总结。我的输入参数:
样本列表(in_list):
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]
]我的变体(我在这里找到的)我现在得到的是:
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):
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):
[
['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]
]提前感谢并感谢任何有用的建议和帮助。
发布于 2022-07-24 15:28:57
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)指纹:
[
["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],
]https://stackoverflow.com/questions/73098582
复制相似问题