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

标签 python csv dictionary

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

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

我想读取此 csv 行并提供以下输出:

A 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。

def 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 来存储值,然后将它们打印出来:

import 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))
        )

关于python - 在 Python 中读取 csv 文件并创建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15400165/

相关文章:

python - 我可以在不阅读全部内容的情况下获得 numpy 保存文件的形状吗(例如 memmap)

java - 如何从奇怪的字符(例如 SUB)中清除 csv 文件?

javascript - 读取 CSV 文件 JavaScript

c# - 如何在 C# 中将对象转换为 Dictionary<TKey, TValue>?

Python 在字典值中追加字典

python - Pandas :对一系列 bool 值进行和/或操作

python - 无法导入 python 模块(numpy、scipy、matplotlib)

python - TypeError: 'function' 对象不可下标 python。我正在尝试将每个 .mp4 文件合并为一个视频

java - 如何读取csv文件中的指定行

dll - vc6中STL映射分配错误