Python 将csv数据转换为dict的最佳方法

Python 将csv数据转换为dict的最佳方法,python,csv,Python,Csv,我有以下数据的csv文件 val1,val2,val3 1,2,3 22,23,33 那么如何将数据转换成dict呢 dict1 = { 'val1': 1, 'val2': 2, 'val3': 3} dict2 = { 'val1': 22, 'val2': 23, 'val3': 33} fp = open('file.csv', 'r') reader = csv.reader(fp) for row in reader: ???? 谢谢使用: 创建一个像普通读取器一样运行的

我有以下数据的csv文件

val1,val2,val3
1,2,3
22,23,33
那么如何将数据转换成dict呢

dict1 = { 'val1': 1, 'val2': 2, 'val3': 3}
dict2 = { 'val1': 22, 'val2': 23, 'val3': 33}
fp = open('file.csv', 'r')
reader = csv.reader(fp)
for row in reader:
    ????
谢谢

使用:

创建一个像普通读取器一样运行的对象,但将读取的信息映射到dict中,dict的键由可选的fieldnames参数给出。fieldnames参数是一个参数,其元素按顺序与输入数据的字段相关联。这些元素成为结果字典的键。如果省略fieldnames参数,则csvfile第一行中的值将用作fieldnames。如果读取的行包含的字段多于fieldnames序列,则剩余的数据将作为由restkey值键入的序列添加。如果读取的行的字段数少于fieldnames序列,则其余键采用可选restval参数的值。任何其他可选或关键字参数都会传递给基础实例


在其他答案中提到的使用“csv”的酷之处在于,它可以用于读取文件(明显的用例),但也可以解析常规的csv格式字符串

读取csv文件的示例:

import csv
with open('my_file.csv') as f:
   for line in csv.DictReader(f, fieldnames=('val1', 'val2', 'val3')):
      print(line)
请注意,您可以显式地传递要作为键的头,这使得使用没有头的csv文件非常容易

另一个用例是只读取带有“csv”的常规字符串

例如:

import csv
my_csv_string = 'val1, val2, val3'
my_csv_dict = next(csv.DictReader(StringIO(s), fieldnames=('key1', 'key2', 'key3')))

不管怎样,
csv.DictReader()
是您所需要的。

我经常想在操作csv时升级到pandas。它给你一个全新的世界的可能性

import pandas as pd
df=pd.read_csv('test.csv')
for index, row in df.iterrows():
    d=row.to_dict()
    print(d)

print("")

print( df[df.val3>10].iloc[0].to_dict() )
print( list(df[['val3']]['val3']) )
输出:

{'val1': 1, 'val2': 2, 'val3': 3}
{'val1': 22, 'val2': 23, 'val3': 33}

{'val1': 22, 'val2': 23, 'val3': 33}
[3, 33]

根据问题中的要求,使用此代码将csv转换为字典

import csv
with open('data.csv') as file:
    for i in csv.DictReader(file):
        print (dict(i))
import csv
with open('data.csv') as file:
    for i in csv.DictReader(file):
        print (dict(i))