Невозможно извлечь уникальные слова из списка, используя установленную симметрию c разность - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть следующие слова в двух списках

x = ['Director sales North America']
f = ['North America']

Моя цель - извлечь только уникальные элементы списка x

Код ниже

x = ['Director sales North America']
f = ['North America']
res = list(set(x).symmetric_difference (set(f)))
print(res)

дает вывод

['North America', 'Director sales North America']

идеальный вывод требуется

['Director sales']

Чего мне не хватает. Как достичь вышеуказанного результата?

Я тоже в порядке с решением для регулярных выражений. Обратите внимание, что слова в списках являются лишь примерами, настоящая цель - извлечь любые уникальные слова по сравнению с другим списком.

Ответы [ 3 ]

2 голосов
/ 21 апреля 2020

Есть ли причина держать строки в списке? Если да, то я бы преобразовал строки в список строк, где каждый элемент является словом, а затем использовал ваш метод:

x_list = x[0].split()
f_list = f[0].split()
res = list(set(x_list).symmetric_difference (set(f_list)))
1 голос
/ 21 апреля 2020
x = ['Director sales North America']
f = ['North America']
x, f = x[0].split(), f[0].split() # this line is missing!
res = list(set(x) - (set(f))) # you don't need *symmetric* difference here
print(res)

Обновление: Чтобы сохранить исходный порядок слов, замените четвертую строку кода выше на:

res = [ word for word in x if word not in set(f) ]
1 голос
/ 21 апреля 2020

У вас есть два списка, каждый из которых содержит одну строку. Возможно, то, что вы хотите, это: x='Director sales North America'.split().

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