Недавно я только начал изучать модуль csv. Предположим, у нас есть этот CSV-файл:Python: Эффективное чтение из файла с использованием модуля csv
John,Jeff,Judy,
21,19,32,
178,182,169,
85,74,57,
И мы хотим, чтобы прочитать этот файл и создать словарь, содержащий имена (в качестве ключей) и итогов каждого столбца (как значения). Так что в этом случае мы бы в конечном итоге с:
d = {"John" : 284, "Jeff" : 275, "Judy" : 258}
Так что я написал этот код, по-видимому, работает хорошо, но я не доволен, и было интересно, если кто знает лучше или более эффективным/элегантный способ сделать это. Потому что есть только слишком много линий в там: D (Или, может быть, как мы могли бы обобщить его немного - то есть мы не знаем, сколько полей есть.)
d = {}
import csv
with open("file.csv") as f:
readObject = csv.reader(f)
totals0 = 0
totals1 = 0
totals2 = 0
totals3 = 0
currentRowTotal = 0
for row in readObject:
currentRowTotal += 1
if currentRowTotal == 1:
continue
totals0 += int(row[0])
totals1 += int(row[1])
totals2 += int(row[2])
if row[3] == "":
totals3 += 0
f.close()
with open(filename) as f:
readObject = csv.reader(f)
currentRow = 0
for row in readObject:
while currentRow <= 0:
d.update({row[0] : totals0})
d.update({row[1] : totals1})
d.update({row[2] : totals2})
d.update({row[3] : totals3})
currentRow += 1
return(d)
f.close()
Большое спасибо за любой ответ :)