import Counter函数
时间: 2023-12-27 08:04:55 浏览: 48
好的,您可以使用Python的`collections`模块中的`Counter`函数来进行单词计数,这样可以更加简洁和高效地实现该任务。以下是使用`Counter`函数的Python实现:
```python
from collections import Counter
# 读取文件内容
with open('in.txt', 'r') as f:
words = f.read().split()
# 统计单词出现次数
word_count = Counter(words)
# 按出现次数从大到小排序,次数相同的按单词从小到大排序
sorted_words = sorted(word_count.items(), key=lambda x: (-x[1], x[0]))
# 输出结果到文件
with open('out.txt', 'w') as f:
for word, count in sorted_words:
f.write(f"{word} {count}\n")
```
这个实现方式更加简洁,且使用了Python内置的高效计数函数`Counter`,可以更快地完成计数任务。
相关问题
Counter函数
`Counter`函数是Python中的一个内置函数,用来统计可迭代对象中每个元素出现的次数,并以字典的形式返回结果。例如:
```python
from collections import Counter
lst = ['apple', 'banana', 'apple', 'orange', 'banana', 'pear', 'pear', 'pear']
count = Counter(lst)
print(count)
```
输出结果为:
```
Counter({'pear': 3, 'apple': 2, 'banana': 2, 'orange': 1})
```
可以看到,`Counter`函数返回的是一个字典,其中字典的键是可迭代对象中的元素,值是该元素在可迭代对象中出现的次数。在上面的例子中,'pear'出现了3次,'apple'和'banana'各出现了2次,'orange'出现了1次。
我不想import Counter
好的,你可以使用普通的字典来统计单词出现次数。以下是代码实现:
```python
s = "This is a test string. This string is for testing purposes. Test is the keyword in this string."
words = s.lower().split() # 将字符串转为小写,并按空格分割为单词列表
word_count = {}
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
top_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)[:10] # 获取出现次数最多的前 10 个单词
with open('wordnum.txt', 'w') as f:
for word, count in top_words:
f.write(f"{word}: {count}\n")
```
这里我们使用一个字典 word_count 来存储单词出现次数,遍历单词列表,如果单词已经在字典中,将其出现次数加 1,否则将其添加到字典中,并将其出现次数初始化为 1。然后使用 sorted 函数对字典进行排序,获取出现次数最多的前 10 个单词。最后,使用文件操作将单词和出现次数写入 wordnum.txt 文件中。
这种方法虽然没有使用 Counter 模块方便,但是也可以实现单词统计的功能。希望对你有所帮助!
阅读全文