将CSV中的特定列转换为字典和特定的逻辑Python

2024-10-06 02:42:16 发布

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

List A包含值:

abc11  198
abc12  178
abc11  198
abc13  123 and so on

我编写了一个函数来删除所有重复项并将唯一的abc值存储在List B = ['abc11', 'abc12', 'abc13', ... ]

CSV文件包含:

abc11  bvc  ex  123  456  somestuffhere
abc11  bvc  ex  456  476  somestuffhere
abc12  bvc  ex  173  426  somestuffhere
abc12  bvc  ex  426  496  somestuffhere
abc13  bvc  ex  143  796  somestuffhere
abc13  bvc  ex  743  896  somestuffhere

我希望第0列的值作为键,第3列和第4列的值作为键,当键相同时,只有最小值(或第3列)和最大值(或第4列)的值。我也不确定这些值是否最好是作为字典中的一个列表,因为我需要稍后用另一个列表检查这些值。你知道吗

{'abc11':['123','476'],'abc12':['173','496'],'abc13':['143','896']}

我试图匹配list A中的匹配值,如果字典中的键与List B匹配,那么我需要检查List A(对应的abc值)中的数值是否在字典中特定的abc值之间。如果是,我想将abc及其值附加到一个单独的列表中。我在下面的代码中使用列表也做了同样的操作,但是我想将csv文件值存储为字典并执行操作。你知道吗

到目前为止我的代码是:

# abc_value                      #list_A
# list_no_rep                    #list_B

match_list = []
with open('new.csv', 'r') as file_open:
lines = csv.reader(file_open, delimiter = '\t')

for row in lines:
    for abcs in list_no_rep:
        if row[0] == abcs:
            for value_row in abc_value:
                if row[3] <= value_row[1] <= row[4]:
                    match_list.append(value_row)

任何帮助都将不胜感激。你知道吗


Tags: csv列表字典valueopenlistexrow