【问题标题】:Creating a list of dictionary objects from a csv file从 csv 文件创建字典对象列表
【发布时间】:2022-01-14 20:15:27
【问题描述】:

我正在尝试从类似于下面的 csv 文件创建字典列表

name,age,gender  
jack,20,male  
rose,18,female 

这样字典才能读出来

a= [{'name':'jack', 'age':20, 'gender':'male'}, {'name':'rose', 'age':18, 'gender':'female'}]

但是,我不允许使用 dictReader 或任何类型的阅读器(也不允许使用“with”)。如何使用最基本的语句来做到这一点?

【问题讨论】:

  • 不允许使用with 是一个非常奇怪的限制。你可以使用open吗? for? in? split? strip? list? =? “基本陈述”的标题到底是什么?
  • 是的,允许使用所有这些。 with我们还没学过所以不能用,网上找解决办法的时候看到了

标签: python csv dictionary


【解决方案1】:

读取第一行以构建键列表,然后遍历其余行以分配值。使用strip 删除换行符和任何其他悬空空格,使用split(",") 分割每一行。

csv = open("titanic.txt")
keys = next(csv).strip().split(",")
print([{k: v for k, v in zip(keys, row.strip().split(","))} for row in csv])
csv.close()
[{'name': 'jack', 'age': '20', 'gender': 'male'}, {'name': 'rose', 'age': '18', 'gender': 'female'}]

等价于csv.DictReader:

from csv import DictReader

csv = open("titanic.txt")
print(list(DictReader(csv)))
csv.close()

【讨论】:

  • 谢谢!没有zip 也有办法做到这一点吗?
  • 有,但如果你想让我给你写,你应该把它列入禁用词列表。 :) 您可以在此处阅读有关其工作原理的所有信息,然后从那里了解如何自己重新实现它:tutorialsteacher.com/python/zip-method
猜你喜欢
  • 2015-09-16
  • 2021-02-19
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 2011-10-08
  • 2012-12-15
相关资源
最近更新 更多