@Timebird

Вопрос по словарям Python?

Имеется список словосочетаний со счётчиком, сколько раз то или иное встречается в тексте. Пример:
'Которая часто': 6, 'чулане хранится': 7, 'Который построил': 8, 'Который бранится': 2, 'хвоста Который': 4...

Нужно сложить счётчики у тех словосочетаний, которые начинаются на одно и то же слово.
Сам пытался так:
from collections import Counter

for key in needed_bigrams.keys():
    key = key.split(' ')[0] 
    if Counter(key) > 0:
        print(key) # хотел для начала просто вывести-посмотреть, работает ли вообще. Не работает.

TypeError: unorderable types: Counter() > int()

Так вот. Как сложить счётчики у таких словосочетаний?
  • Вопрос задан
  • 461 просмотр
Решения вопроса 1
@javedimka
Хочу сока
from collections import defaultdict


s = {'Которая часто': 6, 'чулане хранится': 7, 'Который построил': 8, 'Который бранится': 2, 'хвоста Который': 4}

def sum_update(d):
    updated = defaultdict(int)
    for k, v in d.items():
        updated[k.split()[0]] += v
    return dict(updated)
    

sum_update(s)

# {'Которая': 6, 'Который': 10, 'хвоста': 4, 'чулане': 7}


Более логичный (значения словаря - счетчики = Counter) способ по наводке от longclaps:
from collections import Counter


def sum_update(d):
    updated = Counter()
    for k, v in d.items():
        updated[k.split()[0]] += v
    return dict(updated)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы