从字典创建对象列表

时间:2017-02-07 13:35:37

标签: python-3.x class object

首先,我有一个计算文本文件中单词的函数,以及一个根据单词出现在该文本文件中的次数创建字典的程序。该计划

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))

现在给定了字典,我想创建一个对象列表,使对象有两个实例变量,单词(字符串)和它出现的时间(整数)。任何帮助表示赞赏!

2 个答案:

答案 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包含情侣:单词,单词的出现次数