所以我做了很多谷歌搜索,但仍然不能解决这个问题。 我试过了:
import csv
mydict={4442:[4441,4442], 4441:[4441,4442]}
with open('testcsv.csv','wb') as f:
writer = csv.writer(f, delimiter=' ')
for key, value in mydict.items():
writer.writerow([key, value])
但这完全不是我所期望的。因为它生成的csv文件如下:
^{pr2}$我永远不会将字典值作为列表读取,而是字符串。 我的阅读过程如下:
result={}
try:
reader = csv.reader(open('testcsv.csv', 'rb'))
result = dict(x for x in reader) #note: Everything turned to be string after reading from csv
print "testcsv.csv found, load it from file."
except:
print "testcsv.csv not found. loop all over."
然后我的结果变成了:
print result
print result[str(4442)]
print result[str(4441)]
{'4441': '[4441, 4442]', '4442': '[4441, 4442]'}
[4441, 4442]
[4441, 4442]
所以我的问题是,对于一个以整型列表为值的字典,如何读写呢?在
更新解决方案,下面接受的答案也有效:
for row in reader:
if row[1][1:-1] != '':
result[int(row[0])] = map(int, row[1][1:-1].split(','))
else:
result[int(row[0])] = []
你需要一个扁平化的列表,比如}
[a,b,c...]
而不是{将输出(第一行)
^{pr2}$这是可行的(并且不使用
eval()
)。请注意,csv文件行的写入方式与您的版本略有不同。在输出:
^{pr2}$注意:创建
result
的一个行程序相当于:空格在这里不是一个好的分隔符,因为列表的字符串表示包含一个空格。对于我的回答,我用“|”作为分隔符。在
要加载csv文件,以便它创建与您编写的dict相同的dict,可以使用以下命令:
所以现在的结果是:
^{pr2}$所有的数字都是整数。记住,这使用eval,eval可能很危险。在
相关问题 更多 >
编程相关推荐