在Python中读取csv文件并创建字典

我有一个像这样的csv数据集:

 

 

CopyA, 10, USA
B,30, UK
C,4,IT
A,20,UK
B,10,USA

我想阅读这些csv行并提供以下输出:

 

CopyA has ran 30 miles with average of 15. 
B has ran 30 miles with average of 20.
C has ran 4 miles with average of 4. 

到目前为止,我的解决方案是读取csv数据并将它们转换为字典然后迭代它们以查看“A”重复了多少次以及它必须为平均值计算的值以及最终生成结果.我已经编写了这段代码,但是我很难有效地计算A重复的次数并将里程相加以创建我的最终输出.有什么想在Python中做到这一点?我在C#中很容易做到这一点,但我对Python不太好.

 

Copydef main(filename):
    f = open(filename,'r')
    labels = ['name','miles','country']
    data = csv.DictReader(f,labels,delimiter=',')
    for line in data:
        print (line['name']+"  " + "has ran" +"   "+  line['miles']+" "+"miles")

    f.close()

最佳答案

您可以使用defaultdict存储值,然后将其打印出来:

 

 

Copyimport csv

from collections import defaultdict

with open(filename, 'r') as handle:
    reader = csv.DictReader(handle, ['name', 'miles', 'country'])
    data = defaultdict(list)

    for line in reader:
        data[line['name']).append(int(line['miles']))

    for runner, distances in data.items():
        print '{} ran a total of {} miles and an average of {} miles'.format(
            runner, sum(distances), sum(distances) / float(len(distances))
        )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值