为了账号安全,请及时绑定邮箱和手机立即绑定

如何创建包含信息的嵌套字典。来自 csv 文件

如何创建包含信息的嵌套字典。来自 csv 文件

猛跑小猪 2023-03-01 16:14:49
我正在处理 cs50 的 pset6、DNA,我想读取一个如下所示的 csv 文件:name,AGATC,AATG,TATCAlice,2,8,3Bob,4,1,5Charlie,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添加所有值到字典,以便我有一个以后可以访问的数据库。
查看完整描述

2 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

你应该使用 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)


查看完整回答
反对 回复 2023-03-01
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

使用简单的文件读取


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'}}


查看完整回答
反对 回复 2023-03-01
  • 2 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信