【发布时间】:2013-06-22 14:27:25
【问题描述】:
我有一本格式如下的字典:
d[class name]=(list of files)
例如:
d[earn]=(6,7,4)
其中 6.txt、7.txt 和 4.txt 是属于“earn”类的文件
现在,我需要创建另一个字典 d2,这样:
d2[earn]=(12,3,2,17)
在哪里
- 12是“earn”这个词在6.txt中出现的次数,
- 3是“earn”这个词在7.txt中出现的次数,
- 4是“earn”这个词在4.txt中出现的次数
- 17 是单词“earn”在所有三个文件中出现的次数,即;总和。
这是我的代码:
import collections
import sys
import os
import re
sys.stdout=open('dictionary.txt','w')
from collections import Counter
from glob import glob
folderpath='d:/individual-articles'
counter=Counter()
with open('topics.txt') as f:
d= collections.defaultdict(list)
for line in f:
value, *keys = line.strip().split('~')
for key in filter(None, keys):
d[key].append(value+".txt")
filepaths = glob(os.path.join(folderpath,'*.txt'))
def words_generator(fileobj):
for line in fileobj:
for word in line.split():
yield word
word_count_dict = {}
for file in filepaths:
f = open(file,"r")
words = words_generator(f)
for word in words:
if word not in word_count_dict:
word_count_dict[word] = {"total":0}
if file not in word_count_dict[word]:
word_count_dict[word][file] = 0
word_count_dict[word][file] += 1
word_count_dict[word]["total"] += 1
for k in word_count_dict.keys():
for filename in word_count_dict[k]:
if filename == 'total': continue
counter.update(filename)
for word, counts in word_count_dict.items():
print(word, counts['total'])
我需要打印 d2,但我的代码不起作用。
【问题讨论】:
标签: python dictionary python-3.x machine-learning