Как посчитать сколько раз данные встречались в списке кортежей?
Есть список кортежей:
[('834319220',), ('753659610',), ('834319220',), ('753659610',)]
Со временем будет больше элементов в таком же виде.
Как посчитать, сколько раз число попадалось в списке?
Ответы (4 шт):
Автор решения: Danis
→ Ссылка
dict_ = {}
arr = [('834319220',), ('753659610',), ('834319220',), ('753659610',)]
for i in arr:
if i in dict_:
dict_[i] += 1
else:
dict_[i] = 1
Автор решения: MaxU
→ Ссылка
воспользуйтесь collection.Counter:
from collections import Counter
data = [('834319220',), ('753659610',), ('834319220',), ('753659610',)]
res = dict(Counter([x[0] for x in data]).most_common())
результат:
In [79]: res
Out[79]: {'834319220': 2, '753659610': 2}
или так - данные отсортированы по убыванию частоты:
In [80]: Counter([x[0] for x in data]).most_common()
Out[80]: [('834319220', 2), ('753659610', 2)]
Автор решения: strawdog
→ Ссылка
from collections import Counter
arr = [('834319220',), ('753659610',), ('834319220',), ('753659610',)]
print(dict(Counter(arr)))
{('834319220',): 2, ('753659610',): 2}
Автор решения: Владислав Харламов
→ Ссылка
from collection import defaultdict
def counter_iterable_values(iterable):
counter = defaultdict(int) # init all values 0
for value in iterable:
counter[value] += 1
return counter
Реализация своего Counter.