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