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,我们将非常感谢您对答案的解释!
使用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]将数组从第二个切片到第二个到最后一个元素.
编辑:跳过标题,转换为元组
我想这就是你想要的:
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)
这里就不做过多解释了。只需将值放入字典中,并跳过添加的第一行。我假设这些人的名字是唯一的。