我感兴趣的是不必将int函数映射到我现在拥有它的字符串元组。见我的例子中的最后一部分:python csv reader - 迭代时将字符串转换为int的行
import os
import csv
filepath = os.path.normpath("c:/temp/test.csv")
individualFile = open(filepath,'rb')
dialect = csv.Sniffer().sniff(individualFile.read(1000))
individualFile.seek(0)
reader = csv.reader(individualFile,dialect)
names = reader.next()
print names
def buildTree(arityList):
if arityList == []:
return 0
else:
tree = {}
for i in xrange(arityList[0][0],arityList[0][1]+1):
tree[i] = buildTree(arityList[1:])
return tree
census = buildTree([(1,12),(1,6),(1,4),(1,2),(0,85),(0,14)])
for m, f, s, g, a, c, t in reader:
try:
m,f,s,g,a,c,t = map(int,(m,f,s,g,a,c,t))
census[m][f][s][g][a][c] += t
except:
print "error"
print m, f, s, g, a, c, t
break
我想要做的是这样的:
for m, f, s, g, a, c, t in map(int,reader):
try:
census[m][f][s][g][a][c] += t
except:
print "error"
print m, f, s, g, a, c, t
break
我试试这个,我得到以下错误:
TypeError: int() argument must be a string or a number, not 'list'
我无法理解这个错误信息。我认为读者是一个可迭代的对象 - 不是一个列表。它为每个迭代返回一个列表,但它本身不是一个列表,是正确的?我想这更像是一个侧面问题。我真正想知道的是,如果有办法做我想做的事。对不起,代码没有真正涉及,但我想我会包括我的整个例子。随意把它撕成碎片! :)我想知道是否最好只有一个字典,其中的关键是一个元组而不是这个嵌套字典的东西,但即使如此,我仍然对解决我的问题感兴趣。
这太棒了。我只是在阅读有关发电机,这有助于我更好地了解它们!对不起,像一个完全noob/fanboy,但我刚刚开始进入蟒蛇,它是如此可怕的真棒。 – oob 2010-09-10 05:02:32
@oob。不要冒汗。我可以使用我可以获得的所有粉丝。哦,等等......你在谈论python。是的,蟒蛇也很酷。 – aaronasterling 2010-09-10 05:06:27