диктовать список и сравнивать списки python

#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.