[英]Merging and sum up items in looping trough nested lists
Need your help, to solve strugle with list of lists filtering, merging and summarizing.需要您的帮助,解决列表过滤、合并和汇总的难题。 My input params:
我的输入参数:
Sample list (in_list):样本列表(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]
]
My variant (I found it here) what i've got for now:我的变体(我在这里找到了)我现在所拥有的:
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))]
My result (out_list):我的结果(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]
]
This comprehension almost do what I need, but summarizing only one q1 (or q2 or q3).这种理解几乎可以满足我的需要,但只总结了一个 q1(或 q2 或 q3)。 And my tries about insert q2, q3 to this comprehension was unsuccessful.
我尝试将 q2、q3 插入到这种理解中是不成功的。 Is it possible to modify this comprehension to summarize q1, q2 and q3 at the same time?
是否可以修改这个理解来同时总结 q1、q2 和 q3? Or maybe exist more simple way to achieve what I need?
或者也许存在更简单的方法来实现我所需要的?
Desirable result list (out_list):理想的结果列表(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]
]
Thanks in advance and appreciate for any useful advises and help.在此先感谢并感谢您提供任何有用的建议和帮助。
Try itertools.tee
:试试
itertools.tee
:
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)
Prints:印刷:
[
["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],
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.