Извлечение соответствующих ключевых слов из списка кортежей - PullRequest
0 голосов
/ 27 июня 2018

Я новичок в Python и мне нужна помощь. У меня есть несколько списков слов и частоты их упоминаний в этом формате:

ResponseTweetsAug27 = [('rescue', 239), ('escape', 164), ...]

ImpactTweetsAug27 = [('закрыть', 1350), ('падение', 1267), ...]

и так далее. Эти списки находятся в файле с каждым списком в отдельной строке.

Многие из пар слово-частота не имеют значения. Мне нужно прочесать списки и извлечь пары слов частоты, связанные с основным списком слов в этом формате:

key_terms = ['beprep', 'готовьтесь', 'готовьтесь', 'hurricaneprep', 'hurricanepreperation' ...]

Цель состоит в том, чтобы отобразить количество упоминаний слов в основном списке. Я думаю, что это будет включать в себя перебор списков кортежей, но я новичок в этом, нуждаюсь в руководстве. Заранее спасибо!

Редактировать: я могу перемещаться по каждому списку кортежей отдельно, но как бы вы перебрали все из них, если у них разные названия?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Вы можете использовать collections.defaultdict с itertools.chain, чтобы вернуть словарь счетчиков. Для key_terms рекомендуется set для поиска сложности O (1).

Данные от @ Frynio.

ListA = [('beprep', 239), ('gear up', 164)]
ListB = [('get ready', 1350), ('falling', 1267)]

from collections import defaultdict
from itertools import chain

key_terms = {'beprep', 'gear up', 'get ready'}

d = defaultdict(int)

for key, value in chain(ListA, ListB):
    if key in key_terms:
        d[key] += value

print(d)

defaultdict(int, {'beprep': 239, 'gear up': 164, 'get ready': 1350})
0 голосов
/ 27 июня 2018

Допустим, вы уже прочитали списки из файлов и поместили их в переменную lists:

ResponseTweetsAug27 = [('beprep', 239), ('gear up', 164)]

ImpactTweetsAug27 = [('get ready', 1350), ('falling', 1267)]

lists = [ResponseTweetsAug27, ImpactTweetsAug27]

key_terms = ['beprep', 'gear up', 'get ready']

for l in lists:
    for pair in l:
        if pair[0] in key_terms:
            print(pair[0], pair[1])

Вы можете перебрать lists. Каждый предмет - это список. Затем в каждом списке (здесь он называется l) вы просматриваете каждую пару, проверяя, существует ли имя / заголовок, как бы вы его ни называли, в key_terms. Если это произойдет, вы распечатаете его, и сколько раз они упоминаются. Результат:

> python tuples.py
beprep 239
gear up 164
get ready 1350
...