#python #list #dictionary #key
#python #Список #словарь #Клавиша
Вопрос:
Я создал функцию, в которой я подсчитываю, сколько раз каждое слово используется в файле, в котором будет указана частота слов. Прямо сейчас функция может вычислить сумму всех слов и показать мне семь наиболее распространенных слов и сколько раз они используются. Теперь я хочу сравнить свой первый файл, в котором я проанализировал частоту слов, с другим файлом, в котором у меня есть наиболее распространенные слова, используемые в английском языке, и я хочу сравнить эти слова со словами, которые у меня есть в моем первом файле, чтобы увидеть, совпадает ли какое-либо из слов.
То, что я придумал, — это составить списки из двух файлов, а затем сравнить их друг с другом. Но код, который я написал для этого, не дает мне никаких результатов, есть идеи о том, как я могу это решить?
def CountWords():
filename = input('What is the name of the textfile you want to open?: ')
if filename == "alice" or "alice-ch1.txt" or " ":
file = open("alice-ch1.txt","r")
print('You want to open alice-ch1.txt')
wordcount = {}
for word in file.read().split():
if word not in wordcount:
wordcount[word] = 1
else:
wordcount[word] = 1
wordcount = {k.lower(): v for k, v in wordcount.items() }
print (wordcount)
sum = 0
for val in wordcount.values():
sum = val
print ('The total amount of words in Alice adventures in wonderland: ' str(sum))
sortList = sorted(wordcount.values(), reverse = True)
most_freq_7 = sortList[0:7]
#print (most_freq_7)
print ('Totoro says: The 7 most common words in Alice Adventures in Wonderland:')
print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[0])] " " str(most_freq_7[0]))
print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[1])] " " str(most_freq_7[1]))
print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[2])] " " str(most_freq_7[2]))
print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[3])] " " str(most_freq_7[3]))
print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[4])] " " str(most_freq_7[4]))
print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[5])] " " str(most_freq_7[5]))
print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[6])] " " str(most_freq_7[6]))
file_common = open("common-words.txt", "r")
commonwords = []
contents = file_common.readlines()
for i in range(len(contents)):
commonwords.append(contents[i].strip('n'))
print(commonwords)
#From here's the code were I need to find out how to compare the lists:
alice_keys = wordcount.keys()
result = set(filter(set(alice_keys).__contains__, commonwords))
newlist = list()
for elm in alice_keys:
if elm not in result:
newlist.append(elm)
print('Here are the similar words: ' str(newlist)) #Why doesn't show?
else:
print ('I am sorry, that filename does not exist. Please try again.')
Ответ №1:
Я не перед интерпретатором, поэтому мой код может быть немного неточным. Но попробуйте что-то более похожее на это.
from collections import Counter
with open("some_file_with_words") as f_file
counter = Counter(f_file.read())
top_seven = counter.most_common(7)
with open("commonwords") as f_common:
common_words = f_common.read().split()
for word, count in top_seven:
if word in common_words:
print "your word " word " is in the most common words! It appeared " str(count) " times!"
Комментарии:
1. Спасибо @bravosierra99 !
2. он выводится в виде символов, хотя «ваше слово e находится в наиболее распространенных словах …», а не в виде слов…
3. как настроен ваш файл общих слов? Я использую .split(), что означает, что слова должны быть разделены пробелами. Вам нужно будет настроить этот код для настройки вашего файла common words.