Сравните предложения в списках A, B и измените слово в B, если они не совпадают. - PullRequest
0 голосов
/ 15 октября 2018

Новичок в python, и у меня есть проблема ниже, я хочу сравнить два списка, A и B, которые содержат предложения.Если слово в B не существует в A, я хочу заменить это слово в B на «foo».Либо в новом списке, либо в текущем списке B.

Пример:

ListA = ["I am Sam"]
ListB = ["I am Sam", "Yes me Sam"]

Я хотел бы получить:

NewList = ["I am Sam", "foo foo Sam"]

Большое спасибо заранее!

Ответы [ 3 ]

0 голосов
/ 15 октября 2018
from itertools import chain
ListA = ["I am Sam"]
ListB = ["I am Sam", "Yes me Sam"]
words = set(chain.from_iterable(map(str.split, ListA)))
ListB = [' '.join(i if i in words else 'foo' for i in item.split()) for item in ListB]
['I am Sam', 'foo foo Sam']

Попробуйте: сначала используйте set , а затем попытайтесь сравнить их.

0 голосов
/ 15 октября 2018
# two list from the question
ListA = ["I am Sam"]
ListB = ["I am Sam", "Yes me Sam"]

# use set() to collect unique words in ListA    
setA = set([word for i in range(len(ListA)) for word in ListA[i].split(' ')])

# looping ListB and compare each word of each sentence in ListB with ListA
ListB = [word if word in setA else 'foo' for i in range(len(ListB)) for word in ListB[i].split()]

print(ListB)

Это выводит:

['I am Sam', 'foo foo Sam']
0 голосов
/ 15 октября 2018

Вот один из способов, используя set и затем понимание списка:

from itertools import chain

ListA = ["I am Sam"]
ListB = ["I am Sam", "Yes me Sam"]

words = set(chain.from_iterable(map(str.split, ListA)))

ListB = [' '.join(i if i in words else 'foo' for i in item.split()) for item in ListB]

['I am Sam', 'foo foo Sam']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...