Я хочу сортировать определенный словарь и возвращать список top_n числа вхождений. Словарь представляет собой набор слов из документа txt, причем «ключ» - это одно слово из файла txt, а «значение» - его количество вхождений в документе.Сортировка словарей по наибольшим значениям: метод класса
У меня есть инициализации метод следующим образом:
def __init__(self:'Collection_of_words', file_name: str) -> None:
''' this initializer will read in the words from the file,
and store them in self.counts'''
l_words = open(file_name).read().split()
s_words = set(l_words)
self.counts = dict([ [word, l_words.count(word)]
for word
in s_words])
Теперь один из моих методов экземпляра возвращает список строк в «сверху» п число вхождений Givin некоторые Int аргумент. Я дал ему шанс:
def top_n_words(self, i):
'''takes one additional parameter, an int,
<i> which is the top number of occurences. Returns a list of the top <i> words.'''
return [ pair[0]
for pair
in sorted(associations, key=lambda pair: pair[1], reverse=True)[:5]]
Однако всякий раз, когда я запускаю этот код я получаю ошибки и не могу понять, почему. Я не уверен, как сортировать объекты словаря (например. Self.counts)
Вам просто нужно это работать, или вы пытаетесь выяснить, как это сделать в качестве учебного упражнения? Есть встроенный класс, который сделает это для вас более эффективным способом, 'collections.Counter'. –
Нет, я пытаюсь понять это как учебное упражнение с помощью коллекций. Каунтер. –