Python CSV Reader - преобразовать строку в Int в строке для при итерации
Я заинтересован в том, чтобы не записывать карту функции 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'
У меня проблемы с пониманием этого сообщения об ошибке. Я думал, что читатель был повторяемым объектом, а не списком. Он возвращает список для каждой итерации, но сам не является списком, правильно? Я предполагаю, что это скорее побочный вопрос. Я действительно хочу знать, есть ли способ сделать то, что я пытаюсь сделать. Извините за код, который на самом деле не имеет отношения, но я подумал, что включу весь мой пример. Не стесняйтесь разорвать его на куски! :) Мне интересно, может быть, было бы лучше просто указать один из вариантов, где ключ - это кортеж, а не этот вложенный словарь, но даже в этом случае я все еще заинтересован в выяснении своего вопроса.