如何创建包含信息的嵌套字典。来自 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添加所有值到字典,以便我有一个以后可以访问的数据库。


猛跑小猪
浏览 171回答 2
2回答

慕尼黑8549860

你应该使用 python 的csv.DictReader模块import csvdata_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] = recordprint(data_dict)

海绵宝宝撒

使用简单的文件读取with open(argv[1], 'r') as data_file:  line = next(data_file)          # get the first line from file (i.e. header)  hdr = line.rstrip().split(',')  # convert header string to comma delimited list                                  # ['name', 'AGATC', 'AATG', 'TATC']    data_dic = {}  for line in data_file:    line = line.rstrip().split(',')    # name and dictionary for current line    data_dic[line[0]] = {k:v for k, v in zip(hdr[1:], line[1:])}print(data_dic)输出{'Alice': {'AATG': '8', 'AGATC': '2', 'TATC': '3'},     'Bob': {'AATG': '1', 'AGATC': '4', 'TATC': '5'}, 'Charlie': {'AATG': '2', 'AGATC': '3', 'TATC': '5'}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python