#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:
вы также можете использовать словарь