#python #python-3.x #string #list #function
#питон #python-3.x #строка #Список #функция
Вопрос:
text=["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"
содержится 1 предложение и встречается 2 раза в text[0]
Для отдельных кодов первый вывод должен быть 1
, а второй вывод должен быть 2
Я пробовал функции с .count
и .check
, но не смог создать правильный код.
Комментарии:
1. Что вы подразумеваете под «Для отдельных кодов первый вывод должен быть 1, а второй вывод должен быть 2»?
2. @np8 существуют отдельные коды первый код должен выводить количество предложений, в которых содержится слово (например: дюран в 1 предложении) второй код должен выводить частоту слов в предложении(предложениях) (например: второй код собирает информацию о том, что дюран в 1-м предложении и проверяет, сколько «дюран»в этом предложении, которое равно 2)
Ответ №1:
Этот код подсчитывает все вхождения a word
во всех строках списка списков l
, а также возвращает количество элементов списка, содержащих это word
.
text=["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"] def countInListOfLists(l, word): counts = [s.count(word) for s in l] return sum([1 for c in counts if c gt; 0]), sum(counts) print(countInListOfLists(text, "duran"))
Выход:
(1,2)
Комментарии:
1. как мне сделать так, чтобы это повторилось для этого вывода ? def get_unique_words(a): посещено = установить() uniq = [] для слова в.разделить(): если слово не посещено: uniq.добавить(слово) посещено.добавить(слово) вернуть uniq def get_unique_words_from_list_of_strings(str_list): вернуть get_unique_words(‘ ‘.присоединиться(str_list)) words_in_order = get_unique_words_from_list_of_strings(текст) печать(слова в порядке)
2. Чтобы уточнить: во-первых, вы хотите подать
get_unique_words
заявку на каждый список,l
а затем хотите подсчитать?3.
countInListOfLists
нужно применятьtext
к каждому словуwords_in_order
без моего ввода print(countInListOfLists(текст, «»)) каждый раз4. Я не использовал вашу функцию, но вы можете сделать что-то вроде этого:
uniqueText = set((" ".join(text)).split(" ")) print([countInListOfLists(text, word) for word in uniqueText])
. (aset
не содержит дубликатов по дизайну)
Ответ №2:
Вы можете сделать это как один лайнер —
wordCount = len([word for word in (' ').join(text).split(' ') if word == 'duran'])
Ответ №3:
вы можете выполнить это с помощью следующего кода.
# check how many times a term has occurred in a list and its frequency def count_occurrences(lst, term): return lst.count(term) # check the frequency of term in a list def frequency(lst, term): return count_occurrences(lst, term) / len(lst)
Кроме того, я предполагаю, что вы заранее разделите элементы списка, чтобы создать список слов, а не список предложений, что добавляет сложности. В противном случае см. Ответ @CLRW97.
Разделите свой список на слова:
# split list of sentences into list of words def split_sentences(lst): return ' '.join(lst).split()
В результате в вашем распоряжении будут три чистые функции:
# split list of sentences into list of words def split_sentences(lst): return ' '.join(lst).split() # check how many times a term has occurred in a list and its frequency def count_occurrences(lst, term): lst = split_sentences(lst) return lst.count(term) # check the frequency of term in a list def frequency(lst, term): lst = split_sentences(lst) return count_occurrences(lst, term) / len(lst) text=["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"] print(count_occurrences(text, "duran")) print(frequency(text, "duran")) gt; 2 gt; 0.07407407407407407
Однако для получения более простого ответа ознакомьтесь с ответом @DannyMoshe, который также кажется довольно разумным. Мой просто разбит на несколько функций, чтобы сделать код более понятным, а также снизить его сложность за счет использования встроенных/простых функций Python.