Python 我需要返回前20个字数,但是我';我只能返回第一个字数,不能返回其余的。如果有人能帮忙的话
我需要返回前20个字数。但是,我只能返回第一个字数,不能返回其余的Python 我需要返回前20个字数,但是我';我只能返回第一个字数,不能返回其余的。如果有人能帮忙的话,python,jupyter-notebook,Python,Jupyter Notebook,我需要返回前20个字数。但是,我只能返回第一个字数,不能返回其余的 def print_top(all_text, top = 20): dict2 ={} word_d = word_dict(all_text) items = sorted(word_d.items(), key=get_count, reverse=True) for amounts in items[:20]: dict2 = (amounts[0], amounts[1
def print_top(all_text, top = 20):
dict2 ={}
word_d = word_dict(all_text)
items = sorted(word_d.items(), key=get_count, reverse=True)
for amounts in items[:20]:
dict2 = (amounts[0], amounts[1])
return dict2
这应该会有所帮助。您的return语句在循环中。因此,在第一个元素之后返回值。请尝试下面的代码片段
def print_top(all_text, top = 20):
word_d = word_dict(all_text)
items = sorted(word_d.items(), key=get_count, reverse=True)
dict2 = {} #Output Dict
for amounts in items[:20]:
dict2[amounts[0]] = amounts[1]
return dict2 #-- > Outside the loop
显示为什么您的结果只返回1个
您可以使用1-liner完成您的任务,它是:
例如:
from collections import Counter
from pprint import pprint
data = """Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos
et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing
elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor
sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore
et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo
dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum
dolor sit amet.
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat,
vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio
dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla
facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy
nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."""
words = [x.strip(",.!?") for x in data.split() if x.rstrip()]
dic = Counter(words).most_common(20)
pprint(dic)
输出:
[('et', 14),
('dolor', 8),
('Lorem', 7),
('ipsum', 7),
('sit', 7),
('amet', 7),
('sed', 7),
('diam', 7),
('dolore', 6),
('ut', 4),
('magna', 4),
('erat', 4),
('vero', 4),
('consetetur', 3),
('sadipscing', 3),
('elitr', 3),
('nonumy', 3),
('eirmod', 3),
('tempor', 3),
('invidunt', 3)]
你的输入看起来像什么?现在您的输出是什么样子的?你希望它看起来怎么样?
[('et', 14),
('dolor', 8),
('Lorem', 7),
('ipsum', 7),
('sit', 7),
('amet', 7),
('sed', 7),
('diam', 7),
('dolore', 6),
('ut', 4),
('magna', 4),
('erat', 4),
('vero', 4),
('consetetur', 3),
('sadipscing', 3),
('elitr', 3),
('nonumy', 3),
('eirmod', 3),
('tempor', 3),
('invidunt', 3)]