Python CSV文件到dict

Python CSV文件到dict,python,csv,dictionary,Python,Csv,Dictionary,所以我正在做一个作业,我试图找出一个步骤,我们将csv文件转换成字典。我的限制之一是不导入csv。在这里搜索有关将CSV文件转换为词典的其他问题时,所有问题都使用导入CSV。例如,如果我的CSV文件包含以下内容(第一行是标题): 我又如何能够在不导入csv的情况下将这些数据转换成Python中的字典 我目前正在进行的工作中,我有一些伪代码,因为我知道我要为这些部分执行什么,但不完全确定如何执行,因为这是我第一周一起使用文件和字典: def read_file(filename): d={

所以我正在做一个作业,我试图找出一个步骤,我们将csv文件转换成字典。我的限制之一是不导入csv。在这里搜索有关将CSV文件转换为词典的其他问题时,所有问题都使用导入CSV。例如,如果我的CSV文件包含以下内容(第一行是标题):

我又如何能够在不导入csv的情况下将这些数据转换成Python中的字典

我目前正在进行的工作中,我有一些伪代码,因为我知道我要为这些部分执行什么,但不完全确定如何执行,因为这是我第一周一起使用文件和字典:

def read_file(filename):
    d={}
    with open(filename , 'r') as f:
        first_line = f.readline()
            for line in f:
                if line.strip().isdigit():
                # assign first string in line as key
                    #assign rest of strings in line as value to key in that line as a tuple
从标题中拉出关键点后,可以转置其余行:


转置将为您提供按列显示的元素,以便它们与每个标题键匹配。

您可以为每行创建一个包含字典项的列表,这更像是一种JSON样式的格式

with open(filename) as f:
    keys = [val.strip().replace('"', '') for val in f.readline().split(',')]
    result = []
    for line in f:
        line = [val.strip().replace('"', '') for val in line.split(',')]
        result.append({key: val for key, val in zip(keys, line)})

>>> result
[{'Author': 'Smith',
  'Headline': 'Crash',
  'Newspaper': 'New York Times',
  'Year Published': '2001'},
 {'Author': 'Dudley',
  'Headline': 'Fire',
  'Newspaper': 'Washington Post',
  'Year Published': '2010'},
 {'Author': 'Kuhn',
  'Headline': 'Addiction',
  'Newspaper': 'National Enquirer',
  'Year Published': '2008'}]

当您说“不导入csv”时,您的意思是不使用标准库中的
csv
模块吗?因此不是代码编写服务。请展示您自己的代码尝试,并解释您在自己的代码中遇到的困难。@idjaw我完全理解这一点,并不期望它会如此。@Nick很棒。那么你的代码在哪里?:)
with open("foo.csv") as f:
    # pull header line and split into keys
    keys = next(f).strip().split(",")
    # transpose remaining lines 
    values = zip(*(line.strip().split(",") for line in f))
    # zip keys and values and create a dict
    dct = dict(zip(keys, vals)
with open(filename) as f:
    keys = [val.strip().replace('"', '') for val in f.readline().split(',')]
    result = []
    for line in f:
        line = [val.strip().replace('"', '') for val in line.split(',')]
        result.append({key: val for key, val in zip(keys, line)})

>>> result
[{'Author': 'Smith',
  'Headline': 'Crash',
  'Newspaper': 'New York Times',
  'Year Published': '2001'},
 {'Author': 'Dudley',
  'Headline': 'Fire',
  'Newspaper': 'Washington Post',
  'Year Published': '2010'},
 {'Author': 'Kuhn',
  'Headline': 'Addiction',
  'Newspaper': 'National Enquirer',
  'Year Published': '2008'}]