gpt4 book ai didi

python - 如何从Python列表的不同行添加对象?

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:17 26 4
gpt4 key购买 nike

我是编程和 Python 新手,正在研究修改列表的脚本。下面的第一部分显示从文件导入后的列表。

如果行具有相同的 [0][2][3],我想对每行求和 [4],并对每行求和 [6]。还将 [2] 更改为“总和”

最后一部分显示了最终结果,但是在 Excel 中执行了我想要的操作之后,然后导入了文件。

预先感谢您为我指明了正确的方向。

['4/1/2014', 'One', 'Buy', 'X', '33.333', '1.5', '50\n']
['4/1/2014', 'One', 'Buy', 'y', '14.348', '2.3', '33\n']
['3/27/2014', 'One', 'Buy', 'Z', '18.889', '0.9', '17\n']
['4/1/2014', 'Two', 'Buy', 'X', '6.667', '1.5', '10\n']
['3/27/2014', 'Four', 'Sell', 'Z', '2.222', '0.9', '2\n']
['3/27/2014', 'One', 'Buy', 'Z', '18.889', '0.9', '17\n']
['3/27/2014', 'Two', 'Buy', 'Z', '5.556', '0.9', '5\n']
['3/27/2014', 'Three', 'Buy', 'Z', '8.889', '0.9', '8\n']
['4/1/2014', 'Four', 'Sell', 'X', '16.667', '1.5', '25\n']
['4/1/2014', 'Four', 'Sell', 'y', '3.043', '2.3', '7\n']
['4/1/2014', 'One', 'Buy', 'X', '33.333', '1.5', '50\n']
['4/1/2014', 'Two', 'Buy', 'X', '6.667', '1.5', '10\n']
['4/1/2014', 'Three', 'Buy', 'X', '3.333', '1.5', '5\n']
['4/1/2014', 'One', 'Buy', 'y', '14.348', '2.3', '33\n']
['4/1/2014', 'Two', 'Buy', 'y', '11.739', '2.3', '27\n']
['4/1/2014', 'Three', 'Buy', 'y', '1.522', '2.3', '3.5\n']



['3/27/2014', 'Four', 'Sell', 'Z', '2.222', '0.9', '2\n']
['4/1/2014', 'Four', 'Sell', 'X', '16.667', '1.5', '25\n']
['4/1/2014', 'Four', 'Sell', 'y', '3.043', '2.3', '7\n']
['3/27/2014', 'Sum', 'Buy', 'Z', '33.333', '0.9', '30\n']
['4/1/2014', 'Sum', 'Buy', 'X', '43.333', '1.5', '65\n']
['4/1/2014', 'Sum', 'Buy', 'y', '27.609', '2.3', '63.5\n']

最佳答案

经过多次尝试,我终于达到了结果:

首先,您需要删除输入中的重复数据(因为您的结果似乎没有考虑重复数据):

def is_duplicate(l1, l2):
return not any(a != b for a, b in zip(l1, l2))

#remove duplicates

for i in range(len(li)):
j = i + 1
for x in li[i + 1:]:
if is_duplicate(li[i], x):
li.pop(j)
j += 1

然后创建一个包含输出的列表,对于列表中的每个项目,我们弹出它(从列表中删除并存储它),然后将其比较以了解是否必须与其他项目求和。如果是这样,我们对它们求和并将其删除,这样它们就不会再次求和。

out = []

while len(li):
tmp = li.pop(0)
i = 0
while i < len(li):
item = li[i]
if tmp[0] == item[0] and tmp[2] == item[2] and tmp[3] == item[3]:
tmp[1] = 'Sum'
tmp[4] = '{:.3f}'.format((float(tmp[4]) + float(item[4])))
tmp[6] = '{:.1f}\n'.format(float(tmp[6]) + float(item[6]))
li.pop(i)
else:
i += 1
out.append(tmp)

很抱歉直接给出答案,而不是引导您找到答案。

关于python - 如何从Python列表的不同行添加对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23328452/

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