Подсчет по частичной строке в Python

#python #grouping #counting

Вопрос:

Итак, у меня есть список строк (прописные буквы).

 list = ['DOG01', 'CAT02',  'HORSE04',  'DOG02',  'HORSE01', 'CAT01', 'CAT03',  'HORSE03',  'HORSE02']
 

Как я могу сгруппировать и подсчитать вхождение в список?
Ожидаемый результат:

Ожидаемый результат:

Ответ №1:

Вы можете попробовать воспользоваться Counter библиотекой здесь:

 from collections import Counter
import re

list = ['DOG01', 'CAT02', 'HORSE04', 'DOG02', 'HORSE01', 'CAT01', 'CAT03', 'HORSE03', 'HORSE02']
list = [re.sub(r'd 

Это печатает:

 Counter({'HORSE': 4, 'CAT': 3, 'DOG': 2})
 

Обратите внимание, что описанный выше подход просто удаляет числовые окончания каждого элемента списка, а затем агрегирует только альфа-имена.

Ответ №2:

вы также можете использовать словарь

 list= ['DOG01', 'CAT02',  'HORSE04',  'DOG02',  'HORSE01', 
      'CAT01', 'CAT03',  'HORSE03',  'HORSE02']
dic={}
for i in list:
    i=i[:-2]
    if i in dic:
        dic[i]=dic[i] 1
    else:
        dic[i]=1
print(dic)
 

, '', x) for x in list]
print(Counter(list))
Это печатает:


Обратите внимание, что описанный выше подход просто удаляет числовые окончания каждого элемента списка, а затем агрегирует только альфа-имена.

Ответ №2:

вы также можете использовать словарь