使用python csv包中的列表填充字典的值

时间:2017-07-04 20:52:36

标签: python csv dictionary nested

我有一个每个州的sat分数的CSV文件。该文件每行包含一个州的数据(state_name,rate,math,verbal)。我创建了一个字典,其中包含状态,速率,数学,口头的关键值,代码如下:

with open('../sat_scores.csv', mode='r') as f:
    sat = {}
    reader = csv.reader(f)
    for row in reader:
        for item in row:
            sat[item]=[]
        break

现在我用剩余的CSV填充列。数据的字典格式将是列名作为键,每列下的数据作为值。我还需要将字符串数字列Rate,Math和Verbal放入浮点数。我已经走到了这一步:

    for row in reader:
        for item, key in (row, sat.keys()):
            if key == 'State':
                sat[key].append(item)
                print(sat)
            else:
                new_item = float(item)
                sat[key].append(new_item)
                print(sat)

我无法弄清楚如何同时遍历sat字典的键和行中的项目。请帮帮忙?

1 个答案:

答案 0 :(得分:0)

您需要保持标题字段的顺序:

reader = csv.reader(f)
header = next(reader)
for row in reader:
    for name, value in zip(header, row):
        print(name, value)

你自己并不是真的需要这样做,你可以使用csv.DictReader获取每行的字典,并从第一行获取密钥:

reader = csv.DictReader(f)
for row in reader:
    print(row)