Как я могу проверить, как часто все элементы списка из списка B встречаются в списке A? - PullRequest
0 голосов
/ 28 января 2019

У меня есть список python A и список python B со словами в качестве элементов списка.Мне нужно проверить, как часто элементы списка из списка B содержатся в списке A. Существует ли метод python или как я могу реализовать этот эффективный метод?

Метод пересечения python только говорит мне, что элемент списка из спискаB встречается в списке A, но не так часто.

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Вы можете преобразовать список B в набор, чтобы проверка, находится ли элемент в B., выполняется быстрее.

Затем создайте словарь для подсчета количества раз, которое элемент находится в A, если элементтакже в наборе B

Как уже упоминалось в комментариях collections.Counter делает "тяжелую работу" для вас

0 голосов
/ 28 января 2019

Метод пересечения python только говорит мне, что элемент списка из списка B встречается в списке A, но не так часто.

Правильно, но вы можете основываться на этом принципе.Выполните итерацию по пересечению, используя словарь:

from collections import Counter

A = [1, 2, 2, 2, 3, 3, 4, 4, 4, 5]
B = [2, 3, 5, 6]

c = Counter(A)

res = {k: c[k] for k in c.keys() & B}
# {2: 3, 3: 2, 5: 1}

Представление ключей словаря, то есть dict.keys не является строго set, но имеет set -подобные свойства , например, & (пересечение):

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

0 голосов
/ 28 января 2019
import collections
counter_A = collections.Counter(A)
for word in B:
    print(word, '->', counter_A[word])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...