gpt4 book ai didi

Python 3 列表理解求和与串联

转载 作者:行者123 更新时间:2023-11-30 22:31:14 25 4
gpt4 key购买 nike

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]]

我想要实现的是:

manipulate = [[16, 'August 2014, Iunie 2014', 540, 30], [23, 'August 2014, Septembrie 2016', 540, 40], [21, 'August', 2014, 422, 30]]

为了解释它,在 mylist (列表列表)中,当它找到相同的值元素(在我的示例中 16 ===16 )时,我想检查每个列表的索引 0 (第一个元素)并执行以下操作操作:仅保留第一个列表并累加索引 1 + 索引 2(如本示例 -> 'August', 2014 和 'Iunie', 2014 至 'August 2014, Iunie 2014'),并对索引 4 求和(如我的例子是 20 + 10)。

我设法做到这一点:

manipulate=[i for i in mylist if i[0] not in [mylist[idx][0] for idx in range(0,mylist.index(i))]]

但这将输出:

[[16, 'August', 2014, 540, 10], [23, 'August', 2014, 540, 10], [21, 'August', 2014, 422, 30]]

我必须添加什么才能完成我想要的计算?,我使用 python 3。非常感谢!

最佳答案

这相当冗长,但我觉得它必须是可理解\可读:

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]]

g = {}
for x, *y in mylist:
g.setdefault(x, []).append(y)

def formater(obj, a_list):
if len(a_list) == 1:
return [obj] + a_list[0]
else:
conc = ', '.join('{} {}'.format(sub[0], sub[1]) for sub in a_list)
return [obj, conc, a_list[0][2], sum(sub[3] for sub in a_list)]

manipulate = [formater(k, v) for k, v in g.items()]
print(manipulate) # [[16, 'August 2014, Iunie 2014', 540, 30], [21, 'August', 2014, 422, 30], [23, 'August 2014, Septembrie 2016', 540, 40]]

关于Python 3 列表理解求和与串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45862298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com