我的问题类似于我之前的问题:Python list help (incrementing count, appending)。我接受的答案很有效。但是,这次我有一个不同的问题。
我正在从json文件解析一个字符串,做一些清理然后附加一个新字符串。我需要得到每个单词的计数器(这使得它成为一个唯一的列表,发生的计数器得到更新),从高到低排序(我相信我需要在这里使用most_common)然后将列表限制为20.我可以在JavaScript中完成所有这些操作,但不能在python中完成。
详细地说,我再次运行for循环来从字符串(json字符串文件)中获取每个字符串。
# Counter for each word.
words = Counter();
for e in strings:
# I am cleaning up the string here for unwanted chars, make it lower case
# and append it to a new string variable.
# if I were to print the new string variable it will look like this:
# hello test another test append hi hai hello hello
# i know I need to call words.update
# should I run a for loop in my new string variable for each word?
我怎么能把它限制在20?
我想要产生的是这样的:
word, count
hello 3
test 2
another 1
append 1
hai 1
hi 1
任何建议都会非常感谢。
答案 0 :(得分:2)
如果您有列表字词,则使用.update()
方法:
words.update(some_list_of_words)
您也可以传入生成器表达式:
words.update(word.lower() for word in e.split())
会将字符串e
拆分为空格上的单独单词,然后将每个单词小写并计算这些单词。
.most_common()
接受一个参数,即要返回的最大项目数:
words.most_common(20)
使用较少的单词进行演示,将其限制为前3个最常用的单词:
>>> from collections import Counter
>>> words = Counter('spam ham eggs baz foo bar baz spam ham eggs spam spam bacon eggs ham spam spam spam eggs ham'.split())
>>> words.most_common(3)
[('spam', 7), ('ham', 4), ('eggs', 4)]