我应该如何使用defaultdict?

2024-09-29 23:17:31 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个名为Count的类。在

def __init__(self, caters):
    self.form = collections.defaultdict(collection.Counter)
    self.caters = {caters: Catergory(caters) for caters in cats}

我从一些文件中读到了信息并赋予了它价值

^{pr2}$

如果我想得到每个令牌的总频率,而不管它在哪个文件中,我该怎么做?在

如何获取某个级别中某个单词的频率,例如令牌的名称是dog,level=1,我想得到freq[dog][1]?在


Tags: 文件selfformforinitdefcountcounter
2条回答

像其他人一样,我不确定我是否有足够的背景来提供全面的信息。但这句话:

counter.form[token][file_name] += 1

告诉我,counter.form将为每个令牌/文件名组合包含一个单独的计数。这是由你所说的计数器初始化所支持的:

^{pr2}$

也就是说,self.form是一个默认字典,它的默认值是collection.Counter的实例(基本上是{},还有一些额外的方法,IIRC)。所以,基本上,一个二维计数器。在

如果您希望令牌的计数,而不管它们在哪个文件中,那么您基本上不希望file_name作为计数器的参数,并且计数器必须是一维的。所以我想把计数器的初始化改为:

self.form = collections.Counter()

并将计数递增为:

counter.form[token] += 1

根据程序其余部分的结构,您可能需要更多的更改。但希望这能让你朝着正确的方向前进。在

我使用集合.defaultdict(int)计算令牌的实例。您可以在感兴趣的所有文件中应用类似的代码,对每个文件使用相同的令牌计数器集合(在我的示例中,token_计数):

token_counts = collections.defaultdict(int)
with open('foo.txt') as f:
    for line in f:
        for token in line.split():
            token_counts[token] += 1
for token, count in token_counts.items():
    print token, count

我得承认我觉得你的问题有点模糊。这是我对你在找什么的最好的猜测。在

相关问题 更多 >

    热门问题