Форум сайта python.su
0
Всем привет,бьюсь битый час над задачей
Имеется csv с 2 полями
12 456
1 9404
45 34234
32 456
Необходимо вывести все записи,но сложить сумму первой колонки у повторяющихся значений из второй.Т.е. так должен выглядеть результат:
44 456
1 9404
45 34234
По логике,можно бы было сделать ее, как в двумерном массиве-искать существующий ключ и если нашел,складывать значения первой колонки,но в питоне как сделать двумерный list не могу разобраться,а с массивами вобще беда,я так понял, питон массив не жалует.
Как можно решить подобную задачу?
Офлайн
47
по ключуdict же
Отредактировано bismigalis (Окт. 29, 2013 21:41:26)
Офлайн
33
mflash123
Как можно решить подобную задачу?
import csv from collections import OrderedDict reader = csv.reader(open('input.csv'), delimiter=' ') count = OrderedDict() for elem in reader: count[elem[1]] = count.get(elem[1], 0) + int(elem[0]) csv_writer = csv.writer(open('output.csv', 'w'), delimiter=' ') for row in zip(count.values(), count.keys()): csv_writer.writerow(row)
Отредактировано Budulianin (Окт. 29, 2013 22:30:38)
Офлайн
22
result = {} for line in open(file_name).read.().splitlines(): # разделитель csv 'запятая' a,b = line.split(',') result.setdefault(b, 0) result[b] += int(a) print result # {'34234': 45, '456': 44, '9404': 1}
Офлайн