Я пытаюсь настроить счетчик Python на список кортежей.
ListOfTuples = [('Good', 'Bad', 'Ugly'),('East', 'West', 'South'), ('Good', 'Bad', 'Ugly'), ('NewYork', 'Berlin', 'Austria'),('Good', 'Bad', 'Ugly')]
Я ищу простой счетчик, который выбрасывает:
('Good', 'Bad', 'Ugly') = 3
('East', 'West', 'South') = 1
('NewYork', 'Berlin', 'Austria') = 1
Когда я посмотрел вверх на SO, я нашел следующий, который работает между кортежами:
def count_ngrams(iterable, n=2):
return Counter(zip(*[islice(iterable, i, None) for i in range(n)]))
count_ngrams(iterable, n=2)
Когда я запустил приведенный выше код на примере, я получаю
Counter({(('Good', 'Bad', 'Ugly'), ('East', 'West', 'South')): 1, (('East', 'West', 'South'), ('Good', 'Bad', 'Ugly')): 1, (('Good', 'Bad', 'Ugly'), ('NewYork', 'Berlin', 'Austria')): 1, (('NewYork', 'Berlin', 'Austria'), ('Good', 'Bad', 'Ugly')): 1})