在python中将csv文件导入为字典以稍后计算面积值

时间:2018-10-31 11:16:31

标签: python

我有以下问题。我有一个.csv文件(180个条目),看起来像这样:

Codes,Area
3443,0
3530,0
3583,0
3589,0
3514,0

我使用以下命令将该.csv文件读入python:

input_file = csv.DictReader(open("CPC.csv"))
for row in input_file:
    print row

然后字典如下:

{'Codes': '3443', 'Area': '0'}
{'Codes': '3530', 'Area': '0'}
{'Codes': '3583', 'Area': '0'}
{'Codes': '3589', 'Area': '0'}
{'Codes': '3514', 'Area': '0'}

那看起来很漂亮,我真的很喜欢。我的目的是为每个代码计算m ^ 2中的面积值。因此,此字典只是临时的工作,目的是汇总所有区域的特定代码,然后稍后再使用该值并将其重新分配给新表。但是我有一个问题: 如何访问我的代码?因此,我只想拥有这种类型的字典:

{'3443', '0'}
{'3530', '0'}
{'3583', '0'}
{'3589', '0'}
{'3514', '0'}

所以我只需要搜索代码(例如3443,然后我可以将其添加到0,这就是我的另一个表中的125m ^ 2)。我看不到该怎么做。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您的原始代码读取csv文件,解析格式以拆分列,然后打印每个解析的行。它不将对象存储在内存中。

您必须选择是将它们全部存储在内存中,还是要随时处理它们并将结果存储在其他文件中,例如在另一个文件中。

从问题描述来看,您似乎将分别处理每个代码。但是,您没有提供“其他表”,因此我不知道它的确切结构。

下面的示例代码将按代码逐个读取文件,对于每个代码,它将在YOUR_OTHER_TABLE中搜索要放入Area字段中的值。然后它将每一行写入单独的结果文件。

另外,似乎您正在使用python 2,因此以下示例也使用了python 2规范(例如,以二进制模式打开csv文件,而在python 3中则不需要):

with open("CPC.csv", 'rb') as f, open('CPC_result.csv', 'wb') as fw:
    csv_f = csv.DictReader(f)
    csv_w = csv.DictWriter(fw, csv_f.fieldnames)
    for row in csv_f:
        code = row['Codes']
        calculated_area = YOUR_OTHER_TABLE.get(code, 0)
        row['Area'] = str(calculated_area)
        csv_w.writerow(row)

答案 1 :(得分:0)

areas = {}
input_file = csv.reader(open("CPC.csv"))
next(input_file)
for row in input_file:
    key, val = row
    areas[key] = val

print areas
#{'3443': '0', '3530': '0', '3583': '0', '3589': '0', '3514': '0'}
相关问题