Вопрос по словарям 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() Так вот. Как сложить счётчики у таких словосочетаний?
Для сложения счетчиков словосочетаний, начинающихся с одного слова, можно воспользоваться словарем, в котором ключами будут слова, а значениями - сумма счетчиков для соответствующих словосочетаний.
Вот пример кода, который поможет вам решить данную задачу:
from collections import Counter needed_bigrams = {'Которая часто': 6, 'чулане хранится': 7, 'Который построил': 8, 'Который бранится': 2, 'хвоста Который': 4} counters_by_first_word = {} for key, value in needed_bigrams.items(): first_word = key.split(' ')[0] if first_word in counters_by_first_word: counters_by_first_word[first_word] += value else: counters_by_first_word[first_word] = value for key, value in counters_by_first_word.items(): print(f"{key}: {value}")
Этот код создает словарь counters_by_first_word, в котором суммируются счетчики для слов, которые начинаются с одного и того же слова. После этого происходит вывод суммарных счетчиков для каждого уникального слова.
Для сложения счетчиков словосочетаний, начинающихся с одного слова, можно воспользоваться словарем, в котором ключами будут слова, а значениями - сумма счетчиков для соответствующих словосочетаний.
Вот пример кода, который поможет вам решить данную задачу:
from collections import Counterneeded_bigrams = {'Которая часто': 6, 'чулане хранится': 7, 'Который построил': 8, 'Который бранится': 2, 'хвоста Который': 4}
counters_by_first_word = {}
for key, value in needed_bigrams.items():
first_word = key.split(' ')[0]
if first_word in counters_by_first_word:
counters_by_first_word[first_word] += value
else:
counters_by_first_word[first_word] = value
for key, value in counters_by_first_word.items():
print(f"{key}: {value}")
Этот код создает словарь counters_by_first_word, в котором суммируются счетчики для слов, которые начинаются с одного и того же слова. После этого происходит вывод суммарных счетчиков для каждого уникального слова.