首页 > 解决方案 > Python CSV 字典读取,每次都输入同一行(最后一行)

问题描述

所以我现在正在学习 Python Essentials 课程,并且正在尝试读取 CSV 文件。使用 csv 模块和 csv.DictReader 即时循环通过 csv,为每一行制作一个字典,并将该行添加到返回给 main.py 的列表中。出于某种原因,我无法弄清楚,每次都添加最后一行而不是每次都添加新行。

import csv

def read_file(f_name):
    f = []
    my_dict = {}
    with open(f_name) as f_data:
        for line in csv.DictReader(f_data):
            print(dict(line))
            my_dict.update(dict(line))
            f.append(my_dict)
    return f


def print_file(f):
    for entry in f:
        print(entry)



print('file name > weather.csv')
f_name = 'python/topicchallenge6b/weather.csv'

f = read_file(f_name)
print()
print_file(f)

来自 CSV:

"Temp","Press","Humidity"
1.1,55.5,22.2
3.3,4.4,6.6
8.8,99.9,7.7

所有三个条目都保存为 8.8,99.9,7.7,但作为不同的集合正确打印。

file name > weather.csv
{'Temp': '1.1', 'Press': '55.5', 'Humidity': '22.2'}
{'Temp': '3.3', 'Press': '4.4', 'Humidity': '6.6'}  
{'Temp': '8.8', 'Press': '99.9', 'Humidity': '7.7'} 

{'Temp': '8.8', 'Press': '99.9', 'Humidity': '7.7'} 
{'Temp': '8.8', 'Press': '99.9', 'Humidity': '7.7'} 
{'Temp': '8.8', 'Press': '99.9', 'Humidity': '7.7'} 

为什么python会有这样的行为,有没有更好的方法?

标签: pythoncsvdictionary

解决方案


推荐阅读