使用Python动态构建类引用

2024-10-03 02:37:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有标题的csv文件,我正在尝试使用标题来标识类中要更新的位置

Age, all, bladder, brain, breast,...
0, 23.34, 0, 3.8905, 0, ...
1, 22.7339, 0, 4.4064, 0,...

我有一个包含98个条目的“基线”列表,每个条目都包含一个字段.cancer,而在.cancer中有.all、.bladder、.brain、.breast等等字段,因此可以访问50岁人群膀胱癌的患病率

baseline[50].cancer.bladder.prevalence

我需要一个命令来执行如下操作:

k=0
for row in csv_data:
    for j in range(len(row)):
        baseline[k].cancer.header[j].prevalence = row[j]
    k += 1

因此,名称的一部分(即膀胱,大脑…)来自标题。有没有简单的方法


Tags: 文件csvin标题forageall标识
1条回答
网友
1楼 · 发布于 2024-10-03 02:37:21

尽管这看起来像是pandas的作业,但如果列号/顺序是固定的,就可以完成这项工作。以下代码应该可以工作:请注意,它利用了一些Python 3功能:

import csv

with open('data.txt') as csvfile:
    data = csv.reader(csvfile, delimiter=',')
    _, *cancer_columns = next(data) # capture the headers

    for age, *cancers in data:
        for i, cancer in enumerate(cancers):
            # dynamically get attribute and assign based on cancer_columns index
            getattr(baseline[age].cancer, cancer_columns[i]).prevalence = float(cancer) 

相关问题 更多 >