【问题标题】:dictionary from csv file来自 csv 文件的字典
【发布时间】:2016-03-04 13:20:19
【问题描述】:

所以我有一个格式为 csv 的文件:

  • a.year是所有岁月
  • a.category是所有类别

可以多于或少于四列。

a.year,a.category,a.actor,a.title
2010,Actor-Leading Role,Colin Firth,The King's Speech
2010,Actor-Supporting Role,Christian Bale,The Fighter
2010,Actress-Leading Role,Natalie Portman,Black Swan
2010,Actress-Supporting Role,Melissa Leo,The Fighter
2009,Actor-Leading Role,Jeff Bridges,Crazy Heart

我将如何制作一个字典,该字典将键作为标题,并将该键下方的所有值作为映射到该键的列表。比如:

{a.year:['2010', '2010', '2010', '2010', '2009'], 
 ... and so on} 

所有键和值。有什么想法可以解决这个问题吗?

到目前为止,我已尝试使用 for 循环遍历这些行,但我不知道下一步该做什么。

【问题讨论】:

  • 您说:到目前为止,我已经尝试使用 for 循环遍历这些行...,所以请向我们展示您的尝试并解释它是如何不起作用的.
  • csv.dictreader 到底是做什么的?

标签: python loops csv dictionary


【解决方案1】:

试试这个---打开文件,将列作为值映射到标题:

f = open("data.csv","r")
lines = list(map(lambda x: x.split(","),f.readlines())
f.close()

dictionary = {}
for i in range(len(lines[0])): 
    dictionary[lines[0][i]] = list(map(lambda x:lines[x][i], range(1,len(lines))))

【讨论】:

  • 您可能想要解决的问题是所有内容的类型都是字符串。如果您知道哪一列应该是字符串或整数,则可能需要适当地转换值。
猜你喜欢
  • 2021-01-10
  • 1970-01-01
  • 2023-03-15
  • 2017-03-10
  • 1970-01-01
  • 2014-09-20
  • 2019-03-26
  • 2014-03-20
  • 1970-01-01
相关资源
最近更新 更多