Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 23, 2011 10:50:14

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет и суммирование дубликатов в файле csv

Всем доброго!
Имею файл

2062	5
2063 4
2064 5
2065 9
Примерно такого типа, где первый столбец код товара, второй его количество.
Так вот, как можно подсчитать количество повторяющихся каждого из кодов, а затем просуммировать их.



Python 2.7.3
Pyside 1.1.2

Офлайн

#2 Фев. 23, 2011 11:39:53

Studentik
От:
Зарегистрирован: 2009-12-26
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет и суммирование дубликатов в файле csv

считывать строчки файла в словарь {'tovar': kolichestvo} либо в sqlite и запросом “SELECT SUM(kolichestvo) FROM tovary GROUP BY tovar”



Офлайн

#3 Фев. 23, 2011 12:15:45

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет и суммирование дубликатов в файле csv

А если в список запихнуть в виде [,] проблем больше будет?



Python 2.7.3
Pyside 1.1.2

Офлайн

#4 Фев. 23, 2011 12:43:21

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет и суммирование дубликатов в файле csv

C sqlite вроде понятно, а как можно это сделать со словарем или списком?



Python 2.7.3
Pyside 1.1.2

Офлайн

#5 Фев. 23, 2011 13:23:36

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет и суммирование дубликатов в файле csv

словарь всех проще.

In [3]: from collections import defaultdict

In [4]: d = defaultdict(int)

In [5]: f = [(2062, 5), (2063, 4), (2062, 3)]

In [6]: for index, num in f:
...: d[index] += num
...:

In [7]: d
Out[7]: defaultdict(<type 'int'>, {2062: 8, 2063: 4})



Офлайн

#6 Фев. 23, 2011 16:20:29

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Подсчет и суммирование дубликатов в файле csv

Zubchick
словарь всех проще.
и быстрее

Офлайн

#7 Фев. 23, 2011 19:02:14

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет и суммирование дубликатов в файле csv

Спасибо буду разбираться



Python 2.7.3
Pyside 1.1.2

Офлайн

#8 Фев. 23, 2011 19:38:18

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Подсчет и суммирование дубликатов в файле csv

Тогда уже collections.Counter, в документации даже пример похожий есть



Офлайн

#9 Фев. 24, 2011 12:12:39

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет и суммирование дубликатов в файле csv

regall collections.Counter помоему в 2.6 нету.

from collections import defaultdict
import csv
reader = csv.DictReader(open('INVENT_R.TXT', "rb"), delimiter="\t", fieldnames=['tovar', 'kolichestvo'])
d = defaultdict(int)
for index, num in reader:
d[index] += num
И что-то не пойму как теперь вывести результат



Python 2.7.3
Pyside 1.1.2

Отредактировано (Фев. 24, 2011 12:13:20)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version