словарь подсчитать, сколько раз ключевое слово встречается в статьях - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть два списка: app и topic_list. В app есть много приложений, а в topic_list я сохраняю каждое слово из темы. Теперь я хочу знать, какие три приложения имеют наибольшее распространение по данной теме. Моя проблема в том, что все счетчики 1 в count_top_3, и они не должны быть.

count_top_3 = {} #create a dictionary to store the times that the word occurs

for words in app:
    if words in topic_list:
        if words not in count_top_3:
            count_top_3[words] = 1
        else:
            count_top_3[words] += 1
print(count_top_3) 

Edit:

список приложений выглядит так:

['Google Maps',
 'Facebook for Android',
 'Pandora?? internet radio',
 'Zedge Ringtones & Wallpapers',
 'Advanced Task Killer',
 'Twitter',
 'Tiny Flashlight + LED',
 'GO SMS Pro', ...]

и topic_list выглядит так:

['Call Blocker X',
 'FNB Connect Phone',
 'LazyDroid Web Desktop',
 'Private Space Free(SMS & Call)',
 'Private Space Free',
 'Super Call Blocker',
 'Fast Society', ...]

вот мой вывод словаря:

{
    'Google Maps': 1, 
    'Facebook for Android': 1, 
    'Pandora?? internet radio': 1, 
    'Zedge Ringtones & Wallpapers': 1, 
    'Advanced Task Killer': 1, 
    'Twitter': 1, 
    'Tiny Flashlight + LED': 1, 
    'GO SMS Pro': 1, 
    'The Weather Channel': 1, 
    'Shazam': 1, 
    'Lookout Security & Antivirus': 1, 
    'YouTube': 1, 
    'Dictionary.com': 1, 
    'TuneIn Radio': 1, 
    'Movies': 1, 
    'ColorNote Notepad Notes': 1, 
    'Antivirus Free': 1, 
    'Bible': 1, 
    'TiKL': 1...}

На самом деле значение ключей не должно быть 1, я хочу подсчитать, сколько раз эти приложения встречаются в topic_list

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Ваша проблема заключается в том, что вы проверяете, только ли words в topic_list, а не сколько раз это происходит (отображение логического числа в целое число вместо сопоставления коллекции логических значений в целое число), поэтому вы 'Вы получите только значения 1. Решение вашей проблемы зависит от данных в app:

Если значения в приложении уникальны:

В этомВ этом случае вы можете просто переключать, какие данные вы используете в качестве индекса.Поскольку, исходя из вашего вопроса, значения в topic_list не являются уникальными, проверка их на app позволит вам подсчитать их без значительных изменений в вашей логике.

for words in topic_list:
    if words in app:
        if words not in count_top_3:
            count_top_3[words] = 1
        else:
            count_top_3[words] += 1
print(count_top_3) 

Если значения в приложении не уникальны:

В этом случае, если вы попробуете первое решение, вы столкнетесь с текущей проблемой, просто из другого набора данных.Итак, вам нужно подсчитать количество вхождений words в topic_list:

for words in app:
    count = topic_list.count(words)
    if words not in count_top_3:
        count_top_3[words] = count
    else:
        count_top_3[words] += count
0 голосов
/ 09 ноября 2018

Как работает ваш код, приложение, помещенное в count_top_3, будет иметь счетчик> 1, только если приложение было указано в app [] несколько раз, поскольку вы проверяете, является ли каждое приложение в topic_list а не сколько раз это в topic_list. В вашем примере ввода в app [] нет дубликатов.

Если ваша цель - подсчитать, сколько раз каждое приложение появляется в topic_list, вы можете перебрать каждое приложение в app [] и для каждого приложения, а затем перебрать каждую тему в topic_list [] и подсчитать, сколько раз тема соответствует этому приложению, сохраняя результат в count_top_3. Для этого вы также можете использовать метод count ().

Пример:

for currentApp in app:
    count_top_3[currentApp] = topic_list.count(currentApp)
...