【发布时间】:2014-04-06 08:01:30
【问题描述】:
我有一个这样的 csv 文件:
pos,place
6696,266835
6698,266835
938,176299
940,176299
941,176299
947,176299
948,176299
949,176299
950,176299
951,176299
770,272944
2751,190650
2752,190650
2753,190650
我想把它转换成如下的字典:
{266835:[6696,6698],176299:[938,940,941,947,948,949,950,951],190650:[2751,2752,2753]}
然后,在值的范围内填充缺失的数字:
{{266835:[6696,6697,6698],176299:[938,939,940,941,942,943,944,945,946947,948,949,950,951],190650:[2751,2752,2753]}
}
现在我尝试使用建议的解决方案 here 构建字典,但它会用新值覆盖旧值。
任何帮助都会很棒。
这是我编写的用于转换 csv2dict 的函数
def csv2dict(filename):
"""
reads in a two column csv file, and the converts it into dictionary
"""
import csv
with open(filename) as f:
f.readline()#ignore first line
reader=csv.reader(f,delimiter=',')
mydict=dict((rows[1],rows[0]) for rows in reader)
return mydict
【问题讨论】:
-
看csv.DictReader。我会举一个例子,但我自己从未使用过它,所以我也会仔细研究文档!这在算法上当然是可能的,但我认为
csv.DictReader会为你完成繁重的工作。 -
我添加了一个我写的用于将 cdv 转换为字典的函数..
-
第二组大括号是怎么回事,还是一个错误?至于值填写,您可以获得端点的最小值和最大值,并为每个端点生成一个范围(忽略间隙值)。
-
第二组大括号被编辑添加...不知道为什么。
标签: python python-2.7 csv dictionary