Usando o groupby ()
do python
Um bom trabalho para python
( itertools
) groupby () . Abaixo dois pequenos scripts para ambas (partes de) sua (s) pergunta (s).
Basta copiar o código em um arquivo vazio, definir o caminho para o seu arquivo de texto e executá-lo pelo comando:
python3 /path/to/script.py
A primeira parte da sua pergunta; recebendo totais
#!/usr/bin/env python3
from itertools import groupby
from operator import itemgetter
f = '/path/to/file'
for i, n in groupby([l.split() for l in open(f)], itemgetter(0)):
print(i, sum([int(n[1]) for n in list(n)]))
onde f
é o caminho para o seu arquivo, entre aspas
saída:
Large 3
Medium 2
small 4
A segunda parte da sua pergunta, contando linhas com primeira coluna semelhante
É uma edição simples para a primeira:
#!/usr/bin/env python3
from itertools import groupby
from operator import itemgetter
f = '/path/to/file'
for i, n in groupby([l.split() for l in open(f)], itemgetter(0)):
print(i, len(list(n)))
em que f (novamente) é o caminho para o seu arquivo, entre aspas.
Em um arquivo:
MVCC Cybersecurity
MVCC Cybersecurity
MVCC Cybersecurity
Monkey Cybersecurity
Monkey Cybersecurity
Dá a saída:
MVCC 3
Monkey 2
Nota
No seu exemplo, as linhas são classificadas. Presumi, portanto, que não precisamos classificar as linhas primeiro. Se suas linhas não estão classificadas, por favor mencione.
Explicação
[l.split() for l in open(f)]
abre o arquivo f
, lê suas linhas e as divide.
groupby([l.split() for l in open(f)], itemgetter(0))
subsequentemente grupos as linhas pelo primeiro item e
sum([int(n[1]) for n in list(n)])
soma o total dos números nas linhas agrupadas.