Я хочу сравнить два списка и извлечь содержимое
colours = ["yellow", "light pink", "red", "dark blue", "red"]
items = ["the sun is yellow but the sunset is red ",
"the pink cup is pretty under the light",
"it seems like the flower is red",
"skies are blue",
"i like red"]
Ожидаемый результат:
["yellow", "pink light", "red", "blue", "red"]
Если в списке цветов есть два слова, элемент будет поврежденв двух словах.Как видите, порядок слов в цветах («розовый», «светлый») не важен, так как два слова разбиваются на отдельные слова, а затем сравниваются по отдельности в предложениях.Обратите внимание, что в первом элементе в элементах, хотя в списке цветов есть «красный», я не хочу его извлекать, поскольку «красный» находится в индексе, отличном от индекса элемента.
для 4-го индекса, который "темно-синий" и "небо синие", результат должен отображаться только "синий", потому что в элементах нет темного.
Я пробовалзакодировать, но результаты, которые я получаю, это то, что списки не сравниваются в рамках одних и тех же индексов один раз, вместо этого они повторяются многократно, отсюда и повторяющиеся «красные».
colours=["yellow","light pink","red"," dark blue","red"]
items=["the sun is yellow but the sunset is red ","the pink cup is pretty under the light", "it seems like the flower is red", "skies are blue","i like red"]
for i in colours:
y=i.split() #split 2 words to 1 word
for j in y:
#iterate word by word in colours that have more than 1 word
for z in items:
s=z.split() #split sentences into tokens/words
for l in s:
#compare each word in items with each word in colours
if j == l:
print j
Результат:
yellow
light
pink
red
red
red
blue
red
red
red
Правильный результат:
yellow
pink light
red
blue
red