我有一张单子
L = Counter(mywords)
其中
mywords = ['Well', 'Jim', 'opportunity', 'I', 'Governor', 'University', 'Denver', 'hospitality', 'There', 'lot', 'points', 'I', 'make', 'tonight', 'important', '20', 'years', 'ago', 'I', 'luckiest', 'man', 'earth', 'Michelle', 'agreed', 'marry', '(Laughter)', 'And', 'I', 'Sweetie', 'happy']
它比那要长得多,但那只是一个片段。
现在我接下来要做的是:
print ("\n".join(c.most_common(10)))
因为我想让它显示列表中10个最常用的单词及其计数,但是我想让它为列表中的每一项打印成新行,而我得到的是这个错误:
TypeError: sequence item 0: expected str instance, tuple found
使用Python 3,任何帮助都将不胜感激。
如果您想要对格式进行更多控制,可以使用如下格式字符串
如果你只想要这些字符串:
如果要以
('foo', 11)
格式打印字符串和计数:如果您想要字符串并以您选择的其他格式计数:
为什么?
most_common
函数返回(element, count)
对。这些是元组,不是字符串。你不能把元组连在一起。当然,您可以将其转换为字符串(上面的选项2),但这仅在您实际需要每行的格式('foo', 11)
时有效。要获得其他两个选项,您需要忽略一半元组并使用另一个元组,或者编写自己的格式表达式。在任何情况下,都需要对由
most_common
返回的序列的每个成员执行某些操作。python的方法是使用列表理解或生成器表达式。同时,你应该学会如何调试这些类型的案例。当
join
给你一个TypeError
时,把它分成几块,直到找到一个可以存储工作的(用2而不是10来尝试,这样读起来就少了):啊哈!列表中的每个东西都是两个东西的元组,而不仅仅是一个字符串。为什么?
好的,所以它返回最常见的元素及其计数。我只想要元素。所以:
现在我可以加入了:
我不需要括号和父括号(我只需要使用表达式而不是列表理解):
现在,我可以打印出来:
现在它开始工作了,请打印全部10个:
最简单的是:
相关问题 更多 >
编程相关推荐