mylist =[[16, 'August', 2014, 540, 10], [16, 'Iunie', 2014, 100, 20], [23,'August', 2014, 540,10], [23,'Septembrie', 2016, 540,30], [21,'August', 2014, 422, 30]]
我想要实现的是:
^{pr2}$为了解释这一点,在mylist(list of list)中,当索引0(第一个元素)找到相同的value元素(在我的示例16===16)时,我要检查每个列表,并执行以下操作:只保留第一个列表并将其累加到index 1+index 2(如此示例->;'August',2014和'Iunie',2014到'August 2014,Iunie 2014’)并求和指数4(如我的示例20+10)。在
我设法做到了:
^{3}$但这将产生:
[[16, 'August', 2014, 540, 10], [23, 'August', 2014, 540, 10], [21, 'August', 2014, 422, 30]]
为了进行我想要的计算,我还需要添加什么?,我使用python3。非常感谢你!在
这是相当冗长的,但我觉得它必须是,可理解\可读的:
假设列表已经按第一个元素排序,可以使用
itertools.groupby
对元素进行分组,然后组合新的子列表。在如果你想的话,你甚至可以把这些列在一个可怕的清单里。。。在
^{pr2}$结果是这样的(我不合并字符串,因为我不确定您的真正意思是这样):
如果要合并日期,请使用以下稍微更糟糕的列表理解:
这样,结果是:
这适用于每个组中任意数量的元素。如果子列表不是按第一个元素排序的,请先对它们排序,或者使用字典进行分组。在
你可以试试这个:
相关问题 更多 >
编程相关推荐