python - 我怎样才能遍历这个字典而不是对键进行硬编码

标签 python csv dictionary nested cs50

到目前为止,我有这段代码(来自 cs50/pset6/DNA):

import csv

data_dict = {}
with open(argv[1]) as data_file:
    reader = csv.DictReader(data_file)
    for record in reader:
        # `record` is a dictionary of column-name & value
        name = record["name"]
        data = {
            "AGATC": record["AGATC"],
            "AATG": record["AATG"],
            "TATC": record["TATC"],
        }

        data_dict[name] = data

print(data_dict)

输出

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

这是 csv 文件:

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

但我的目标是实现完全相同的事情,但不是对键 AATG 等进行硬编码,而且因为我将使用包含更多值的更大的数据库,我希望能够遍历数据,而不是这样做:

data = {
            "AGATC": record["AGATC"],
            "AATG": record["AATG"],
            "TATC": record["TATC"],
        }

你能帮帮我吗?谢谢

最佳答案

您也可以尝试使用 pandas。

将您的示例数据用作 .csv 文件:

pandas.read_csv('example.csv', index_col = 0).transpose().to_dict()

输出:

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

index_col = 0 因为你有我设置为索引的名称列(以便稍后成为字典中的顶级键)

.transpose() 因此顶级键是名称而不是功能(AGATC、AATG 等)

.to_dict() 将 pandas.DataFrame 转换为 python 字典

关于python - 我怎样才能遍历这个字典而不是对键进行硬编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62855413/

相关文章:

python - 在 Python 中使用正则表达式解析 PDF 文件

python 3 : Checking next value of an iterator without iterating

Python:csv 模块方言类的误导性文档

python - 如何在 Heroku 上执行 python 脚本?

arrays - Swift - 带数组的字典 - 获取对数组的引用

python - 创建一个具有未知键的字典并向其附加一个列表值?

python - 我尝试用另一个定义中的另一个字典迭代嵌套字典,但 Django 不渲染它

python - pickle.dump 在附加到文件时不转储任何内容

python - lambda 给全局变量赋值?

string - 在二维矩阵中排列 3 个字母的单词,使得每一行、每一列和对角线形成一个单词