【问题标题】:Read from file to dictionary as floats instead of strings从文件读取到字典作为浮点数而不是字符串
【发布时间】:2013-10-04 08:57:41
【问题描述】:

我正在从 python 中加载和提取数据,我想将其存储在字典中。

我正在使用 csv 来写入读取数据,并在外部将其存储为逗号分隔的列。这很好用,但是当最初读取数据时(显然)被读取为字符串。 我可以使用两行代码将其转换为带有键和值作为浮点数的字典,但我的问题是我是否可以将数据作为浮点数直接加载到字典中。

我原来的代码是:

reader = csv.reader(open('testdict.csv','rb'))
dict_read = dict((x,y) for (x,y) in reader)

我改成了:

reader = csv.reader(open('testdict.csv','rb'))
read = [(float(x),float(y)) for (x,y) in reader]
dict_read = dict(read)

它以所需的方式加载数据。

那么,是否可以修改第一个dict_read = dict((x,y) for (x,y) in reader) 来执行下面的代码?

解决方案: 解决方案是使用 map-function,它必须用于可迭代对象:

dict_read = dict(map(float,x) for x in reader)

【问题讨论】:

  • 是否可以从反对票中获得评论?谢谢你..

标签: python python-2.7 csv file-io dictionary


【解决方案1】:

试试这个:

dict_read = dict((map(float,x) for x in reader)

【讨论】:

  • 该解决方案不能直接工作,但将我指向地图功能。我不知道,为什么我没有通过谷歌发现这个功能。我的问题的解决方案是:dict_read = dict(map(float,x) for x in reader) 由于 map 就我所见仅支持可迭代对象,因此它会返回错误,例如map(float,'0.1'),但 map(float,('0.1','0.2')) 的通缉行为。无论如何,谢谢你指点我地图功能。
  • 感谢您指出这一点,我打算给您指路,承认我没有测试过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多