嘿我正在尝试使用python中的内置模块csv创建一个字典。本质上它是一个名为weather.csv的excel文件,其中行字典中的键是列标题,值是该行的值。我被卡住了,因为我无法让代码运行多个列来同时生成两个词典。另外,我得到一个关键错误,其中显示print row ['col_list'],我不明白它为什么会发生。 col_list是每行的标题。这是我到目前为止的代码:
import csv
def read_file(filename, col_list):
filename = 'weather.csv'
with open('weather.csv', 'r') as f:
reader = csv.DictReader(f)
for row in reader:
print row['col_list']
这就是我想要的输出。我认为这很简单,我错过了,但我很难搞清楚。
print read_file('weather.csv', ['TemperatureF', 'VisibilityMPH'])
{'TemperatureF': [30.9, 32.0, 32.0, 32.0, 32.0, 30.9 ...],
'VisibilityMPH': [10.0, 10.0, 10.0, 10.0, 4.0, 2.5 ...]}
答案 0 :(得分:1)
如何创建包含每个列标题的键的字典以及列包含的所有值的列表?例如 -
import csv
def read_file(filename, col_list, data={}):
with open('weather.csv', 'r') as f:
reader = csv.DictReader(f)
for num, row in enumerate(reader):
if num == 0: continue # skip if it's the first row, which has the headings
for col in col_list:
if not data.get(col): data[col] = list()
data[col].append(row[col])
return data
答案 1 :(得分:0)
如果你可以使用pandas
,我认为它比csv
模块更适合这项任务。
import pandas as pd
df = pd.read_csv(filename, names=col_list)
dict_ = df.to_dict()