将CSV文件的内容转换为字典

Ale*_*lex 6 python csv dictionary function

到目前为止我的代码是一个基本上读取csv文件并打印其内容的函数:

def read(filename):
    with open(filename, 'r') as csvfile:
        reader = csv.reader(csvfile, delimiter=',')
        for row in reader:
            print(row)
Run Code Online (Sandbox Code Playgroud)

内容sailor.csv:

name, mean performance , std dev
Alice, 100, 0,
Bob, 100, 5,
Clare, 100, 10,
Dennis, 90, 0,
Eva, 90, 5,
Run Code Online (Sandbox Code Playgroud)

read('sailor.csv') 并运行该功能

电流输出:

['name', ' mean performance ', ' std dev']
['Alice', ' 100', ' 0', '']
['Bob', ' 100', ' 5', '']
['Clare', ' 100', ' 10', '']
['Dennis', ' 90', ' 0', '']
['Eva', ' 90', ' 5', '']
Run Code Online (Sandbox Code Playgroud)

所需产量:

{'Dennis': (90.0, 0.0), 'Clare':(100.0, 10.0), 
'Eva': (90.0, 5.0), 'Bob': (100.0, 5.0), 'Alice': (100.0, 0.0)}
Run Code Online (Sandbox Code Playgroud)

任何想法如何实现这一输出?如果有帮助,请使用Python 3.4.2,我们将非常感谢您对答案的解释!

Ben*_*ate 8

使用csv标准库和字典理解...

import csv
with open('sailor.csv') as csvfile:
   reader = csv.reader(csvfile)
   next(reader)
   d = {r[0] : tuple(r[1:-1]) for r in reader}
Run Code Online (Sandbox Code Playgroud)

d你想要的字典在哪里?d[1:-1]将数组从第二个切片到第二个到最后一个元素.

编辑:跳过标题,转换为元组


Mar*_*cin 2

我想这就是你想要的:

import csv

def read(filename):
    out_dict = {}
    with open(filename, 'r') as csvfile:
        reader = csv.reader(csvfile, delimiter=',')
        next(csvfile) # skip the first row
        for row in reader:
            out_dict[row[0]] = float(row[1]), float(row[2])
            print(row)

    return out_dict

print(read('data.csv'))   
Run Code Online (Sandbox Code Playgroud)

印刷:

{'Bob': (' 100', ' 5'), 'Clare': (' 100', ' 10'), 'Alice': (' 100', ' 0'), 'Dennis': (' 90', ' 0'), 'Eva': (' 90', ' 5')}
Run Code Online (Sandbox Code Playgroud)

这里就不做过多解释了。只需将值放入字典中,并跳过添加的第一行。我假设这些人的名字是唯一的。