gpt4 book ai didi

python - 仅使用标准库按另一列中分组值的一列累计总数对文本文件进行排序?

转载 作者:太空宇宙 更新时间:2023-11-04 09:33:53 26 4
gpt4 key购买 nike

我有一个包含这样行的文件

id, car_type, cost
1, benz, 60000
2, benz, 55000
3, bmw, 30000
4, benz, 25000
5, bmw, 26000
6, ford, 5000

我想按每种 car_type 的总成本对该文件进行排序。例如,“benz”的总成本为 60000 + 55000 + 25000 = 14000

所以最终的输出应该是

benz, 140000
bmw, 56000
ford, 5000

到目前为止,这是我所拥有的:

file = "small_sample.txt"


f=open(file,"r")
lines=f.readlines()[1:]
car_and_cost ={}
for x in lines:
cost = x.split(',')[4].rstrip('\n')
car_and_cost.update({x.split(',')[3]:float(cost)})
f.close()
print(car_and_cost)

new_dic = {}
for key,lis in car_and_cost.items():
new_dic[key] = sum(lis)
print(new_dic)

我几乎被困住了。首先,我由此生成的字典总计不正确,而且我根本不知道如何按值对字典进行排序

最佳答案

这是一种使用csvcollections 模块的方法

例如:

import csv
from collections import defaultdict, OrderedDict

result = defaultdict(int)

with open(filename) as infile:
reader = csv.DictReader(infile)
for row in reader: #Iterate Each row
result[row[" car_type"]] += int(row[" cost"]) #Add costs

print(OrderedDict(sorted(result.items(), key=lambda x: x[1], reverse=True)))

输出:

OrderedDict([(' benz', 140000), (' bmw', 56000), (' ford', 5000)])

关于python - 仅使用标准库按另一列中分组值的一列累计总数对文本文件进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54548051/

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