Подсчет количества строк внутри строк в списках

#python #string

#python #строка

Вопрос:

Предположим, у меня есть следующие два списка, которые включают только строковые объекты.

 list1 = ['UC1', 'UC1,UC2', 'UC3' ]
list2 = ['UC1', 'UC2', 'UC3']
  

Я хочу проверить, сколько раз UC1 , UC2 UC2 появляются в list1

Ожидаемый результат должен быть 2,1 и 1 соответственно.

На практике у меня есть миллионы объектов в list1 и list2 соответственно

Может ли кто-нибудь помочь мне сделать это на python максимально эффективно?

Спасибо

Комментарии:

1. list2.count('UC1') ?

2. Проблема в том, что у меня есть миллионы объектов в `list2′, которые следует проверять… есть ли какой-нибудь лучший способ?

3. Ваш list1 правильно определен, т. Е. имеет 3 элемента? или там опечатка?

4. Нет, в нем миллионы элементов — в приведенном примере их действительно три.

5. как насчет numpy.count() ?

Ответ №1:

 n = [len([j for j in list1 if i in j]) for i in list2]
  

вывод

[2, 1, 1]

Ответ №2:

Это сложно. Для подсчета любого элемента в списке мы должны просмотреть весь список. Таким образом, временная сложность равна O (n). Для этого шага мы мало что можем сделать. Я рекомендую sklearn.feature_extract.text.TFIDFTransform .

Чтобы узнать количество всех element , мы должны сохранить количество и быстро вывести количество. Я рекомендую словарь или scipy.sparse.csr_matrix .