如何使用键将CSV文件读取为元组字典?

时间:2019-05-17 02:12:55

标签: python dictionary tuples

我想读取一个csv文件并将具有多个值的键保存为程序中的元组。 CSV文件包含一些国家/地区的数据,这些数据表示其1997年至2010年的CO2排放量。我希望将国家/地区名称作为关键字并将排放率作为元组中存储的值。下面是CSV文件和我想要的示例。

CSV文件:

myDict = {
      "Afghanistan": (value1, value 2,.....,value_n),
      "Algeria": (value1, value 2,.....,value_n),
      .
      .
      .
      "nth country": (value1, value 2,.....,value_n)
      }

所需字典:

import csv
with open('Book1.csv') as f:
    data=[tuple(line) for line in csv.reader(f)]

print(data)

我开发的代码如下所示:

data = [('Afghanistan', 'value1', value2,...,'value_n'), ('Algeria', 'value1', value2,...,'value_n'),....,('nth country', 'value1', value2,...,'value_n')]

但是,输出有些变化。我目前得到以下输出:

a=func(1, 2, 2), b='hey', c=foobar('text'), d=1

您能否让我知道我需要在代码中进行哪些更改才能获得所需的结果?

2 个答案:

答案 0 :(得分:3)

如果使用Python 3+,则可以使用extended iterable unpacking将键与每行中的值分开,然后将每一项添加到字典中。

import csv
d = {}
with open('Book1.csv') as f:
    for key, *values in csv.reader(f):
        d[key] = tuple(map(float, values))

答案 1 :(得分:1)

import pandas as pd
a = pd.read_csv("Book1.csv")
d = dict()
for x in a.columns:
    d[x] = tuple(a[x].values)

让我知道这是否有帮助。