首先,我有一个计算文本文件中单词的函数,以及一个根据单词出现在该文本文件中的次数创建字典的程序。该计划
def counter (AllWords):
d = {}
for word in AllWords:
if word in d.keys():
d[word] = d[word] + 1
else:
d[word] = 1
return d;
f = open("test.txt", "r")
AllWords = []
for word in f.read().split():
AllWords.append(word.lower())
print(counter(AllWords))
现在给定了字典,我想创建一个对象列表,使对象有两个实例变量,单词(字符串)和它出现的时间(整数)。任何帮助表示赞赏!
答案 0 :(得分:1)
怎么样:
list(d.items())
它将创建一个元组列表,如:
[('Foo',3),('Bar',2)]
或者您可以定义自己的类:
class WordCount:
def __init__(self,word,count):
self.word = word
self.count = count
并使用列表理解:
[WordCount(*item) for item in d.items()]
所以在这里创建一个WordCount
对象列表。
尽管如此,您的counter(..)
方法实际上并不是必需的:Python已经有Counter
:
from collections import Counter
这是“带有东西的字典”可以这么说:你可以简单地构建它:
from collections import Counter
Counter(allWords)
答案 1 :(得分:1)
无需重新发明轮子来计算物品。
使用当然collections.Counter
和强大的str.split
使用所有重物的准单线程怎么样?
import collections
with open("text.txt") as f:
c = collections.Counter(f.read().split())
现在c
包含情侣:单词,单词的出现次数