Переменная для управления количеством строк печати Python

Я пытаюсь понять, как использовать переменную для управления количеством строк, которые печатает сценарий. Я хочу использовать выходную переменную и печатать только количество строк, которые пользователь запрашивает. Любая помощь будет принята с благодарностью.

import sys, os

print ""
print "Running Script..."
print ""
print "This program analyzes word frequency in a file and"
print "prints a report on the n most frequent words."
print ""

filename = raw_input("File to analyze? ")
if os.path.isfile(filename):
 print "The file", filename, "exists!"
else:
 print "The file", filename, "doesn't exist!"
 sys.exit()
 print ""
output = raw_input("Output analysis of how many words? ")

readfile = open(filename, 'r+')

words = readfile.read().split()
wordcount = {}
for word in words:
 if word in wordcount:
 wordcount[word] += 1
 else:
 wordcount[word] = 1

sortbyfreq = sorted(wordcount,key=wordcount.get,reverse=True)
for word in sortbyfreq:
 print "%-20s %10d" % (word, wordcount[word])
2 ответа

Словари по существу неупорядочены, поэтому вы не сможете никуда пытаться выводить элементы после сортировки по их частоте.

Используйте collections.Counter Вместо этого:

from collections import Counter
sortbyfreq = Counter(words) # Instead of the wordcount dictionary + for loop.

Затем вы можете получить доступ к наиболее определенным элементам, определяемым пользователем, с помощью:

n = int(raw_input('How many?: '))
for item, count in sortbyfreq.most_common(n):
 print "%-20s %10d" % (item, count)


Просто создайте счетчик в своем последнем цикле, который проверяет количество выполненных циклов и ломается, когда достигнут определенный номер.

limit = {enter number}
counter = 0
for word in sortbyfreq:
 print "%-20s %10d" % (word, wordcount[word])
 counter += 1
 if counter >= limit:
 break

licensed under cc by-sa 3.0 with attribution.