1 回答

TA貢獻2016條經驗 獲得超9個贊
重用代碼來自Efficiently count word frequency in python with little modify
from collections import Counter
from itertools import chain
import pprint
def file_word_counts(filename):
" Word count of file "
# Use intertools.Counter to count words
# Convert counter result to regular dict (i.e. dict(Counter(..))
with open(filename) as f:
return dict(Counter(chain.from_iterable(map(str.split, f))))
def file_counts(files):
" Aggregate word count of muiltiple files into dictionary "
return {filename:file_word_counts(filename) for filename in files}
# Show Results
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(file_counts(['test1.txt', 'test2.txt', 'test3.txt', 'test4.txt']))
輸出
{ 'test1.txt': {'apple': 1, 'banana': 1, 'lemon': 1},
'test2.txt': {'apple': 1, 'banana': 1},
'test3.txt': {'apple': 1, 'lemon': 2},
'test4.txt': {'apple': 1, 'grape': 1, 'lemon': 1}}
選擇
在不使用其他模塊的情況下生產相同的產品
def file_counts(files):
" Aggregate word count of muiltiple files into dictionary "
return {filename:file_word_counts(filename) for filename in files}
def file_word_counts(filename):
" Word count of file "
count_ = {}
with open(filename) as f:
for line in f:
for i in line.rstrip().split():
count_.setdefault(i, 0)
count_[i] += 1
return count_
def file_counts(files):
" Aggregate word count of muiltiple files into dictionary "
return {filename:file_word_counts(filename) for filename in files}
print(file_counts(['test1.txt', 'test2.txt', 'test3.txt', 'test4.txt']))
添加回答
舉報