#python #python-3.x #string #list #function
#питон #python-3.x #строка #Список #функция
Вопрос:
example = ["duran duran sang wild boys in 1984", "wild boys don't remain forever wild", "who brought wild flowers","it was john krakauer who wrote in to the wild"]
Как мне определить уникальные термины и поместить их в такой список:
['duran', 'sang', 'wild', 'boys', 'in', '1984', "don't", 'remain', 'forever', 'who', 'brought', 'flowers', 'it', 'was', 'john', 'krakauer', 'wrote', 'to', 'the']
Мой код:
def uniqueterms(a, d, e, f) : b = a.split() c = [] ` for x in b: if a.count(x) gt;= 1 and (x not in c): c.append(x) print((' '.join(c)).split(), end=' ') g = d.split() h = [] for y in g: if d.count(y) gt;= 1 and (y not in h): h.append(y) print((' '.join(h)).split(), end=' ') i = e.split() j = [] for z in i: if e.count(z) gt;= 1 and (z not in j): j.append(z) print((' '.join(j)).split(), end=' ') k = f.split() m = [] for t in k: if f.count(t) gt;= 1 and (t not in m): m.append(t) print((' '.join(m)).split()) gt;gt;gt; uniqueterms(example[0], example[1], example[2], example[3]) ['duran', 'sang', 'wild', 'boys', 'in', '1984'] ['wild', 'boys', "don't", 'remain', 'forever'] ['who', 'brought', 'wild', 'flowers'] ['it', 'was', 'john', 'krakauer', 'who', 'wrote', 'in', 'to', 'the', 'wild']
Ответ №1:
*Обновлено, чтобы возвращать уникальные слова в порядке их появления. Предыдущая версия, использующая python set (), не была чувствительна к порядку ввода:
def get_unique_words(text): visited = set() uniq = [] for word in text.split(): if word not in visited: uniq.append(word) visited.add(word) return uniq
Для обработки списка строк:
def get_unique_words_from_list_of_strings(str_list): return get_unique_words(' '.join(str_list))
Чтобы привести свой пример:
words_in_order = get_unique_words_from_list_of_strings(example)
который возвращает
['duran', 'sang', 'wild', 'boys', 'in', '1984', "don't", 'remain', 'forever', 'who', 'brought', 'flowers', 'it', 'was', 'john', 'krakauer', 'wrote', 'to', 'the']
Комментарии:
1. Чтобы сделать решение полным, вы должны использовать его как
get_unique_words(' '.join(example))
2. хорошо, это сработало, но теперь как мне отсортировать список ?
3. обновлено, чтобы включить порядок сортировки списка
4. каждый раз, когда я запускаю его, он выдает случайный вывод, поэтому я не могу получить этот вывод с помощью известных мне способов какой-либо помощи ? [«дюран», «пел», «дикий», «мальчики», «в», «1984», «не», «останься», «навсегда», «кто», «принес», «цветы», «это», «был», «джон», «кракауэр», «написал», «кому», «тот»]
5. Ааа, хорошо, вы хотите, чтобы они были отсортированы в порядке появления в исходном списке строк. Это немного сложнее, на один момент.