首页 > 解决方案 > 如何创建包含信息的嵌套字典。来自 csv 文件

问题描述

我正在研究 cs50 的 pset6、DNA,我想读取一个如下所示的 csv 文件:

name,AGATC,AATG,TATC
Alice,2,8,3
Bob,4,1,5
Charlie,3,2,5

我想要创建的是一个嵌套字典,它看起来像这样:

data_dict = {
  "Alice" : {
    "AGATC" : 2,
    "AATG" : 8,
    "TATC" : 3
  },
  "Bob" : {
    "AGATC" : 4,
    "AATG" : 1,
    "TATC" : 5
  },
  "Charlie" : {
    "AGATC" : 3,
    "AATG" : 2,
    "TATC" : 5
  }
}

所以我想用这个:

with open(argv[1]) as data_file:
    for i in data_file:

(或另一种变体)循环遍历csv文件并append添加所有值到字典中,以便我有一个以后可以访问的数据库。

标签: pythonpython-3.xdictionarynestedcs50

解决方案


你应该使用 python 的csv.DictReader模块

import csv

data_dict = {}
with open(argv[1]) as data_file:
    reader = csv.DictReader(data_file)
    for record in reader:
        # `record` is a OrderedDict (type of dict) of column-name & value.
        # Instead of creating the data pair as below:
        # ```
        # name = record["name"]
        # data = {
        #     "AGATC": record["AGATC"],
        #     "AATG": record["AATG"],
        #     "TATC": record["TATC"],
        #     ...
        # }
        # data_dict[name] = data
        # ```
        # you can just delete the `name` column from `record`
        name = record["name"]
        del record["name"]
        data_dict[name] = record

print(data_dict)

推荐阅读