csv dict未返回python中的所有项

dhxwm5r4  于 2022-12-06  发布在  Python
关注(0)|答案(1)|浏览(198)

长话短说。我试图将我的字典传递给一个新函数。当前返回的是在调用时打印一行数据。

import csv

def csvRead():
    with open('data.csv', 'r', newline='') as f:
        rcsv = csv.DictReader(f, delimiter=',')
        mydict = {}

    for line in rcsv:
        for k, v in line.items():
            mydict[k] = float(v)*2
            print(mydict.items())
    return mydict.items()

print('current: ', csvRead())

我不完全确定为什么会发生这种情况。
输出为

dict_items([('Velocity', 2.2)])
dict_items([('Speed', 111.0)])
dict_items([('Acceleration', 44.4)])
dict_items([('Velocity', 6.6)])
dict_items([('Speed', 8.8)])
dict_items([('Acceleration', 13.2)])
Current: dict_items([('Velocity', 6.6), ('Speed', 8.8), ('Acceleration', 13.2)]}

这里的目标是避开Pandas。
CSV格式如下

Velocity,Speed,Acceleration
1.1,55.5,22.2
3.3,4.4,5.5
8.8,9.9,5.5
roejwanj

roejwanj1#

在你的循环中,你覆盖了你的dict值。我现在用一种方式实现了它,在这种方式中,你的dict是用空列表作为值初始化的,读到的数据被追加到这些列表中:

mydict = {key: [] for key in rcsv.fieldnames}
for line in rcsv:
        for k, v in line.items():
            mydict[k].append(float(v)*2) # <-- you were overwriting the value in each loop
            print(mydict.items())

相关问题