<p>问题:
使用infle和outfile,我试图为infle中的每一行向outfile写入唯一的单词和频率。例如,给定“一条鱼两条鱼”,则输出为one:1 two:1 fish:2 (顺序无关紧要)我能够成功地做到这一点,但使用了一些在我的课上没有教过的东西。这是set函数,它自动获取列表中的唯一单词</p>
<p>我的问题是:
有没有其他方法可以在不使问题过于复杂的情况下实现相同的输出?我想在单子上加上一些词,但我没办法。感谢您的帮助</p>
<p>我的工作代码使用set函数</p>
<pre><code>def wordsByLine(inFile,outFile):
inF=open(inFile,'r')
outF=open(outFile,'w')
for line in inF:
wordlst=line.split()
uniquewordlst=set(wordlst)
for word in uniquewordlst:
outF.write(word+':'+str(line.count(word))+' ')
outF.write('\n')
outF.close()
inF.close()
wordsByLine('fish.txt','fishWords.txt')
</code></pre>
<p>填充:</p>
<blockquote>
<p>one fish two fish</p>
<p>red fish blue fish</p>
</blockquote>
<p>输出文件:</p>
<blockquote>
<p>fish:2 one:1 two:1</p>
<p>fish:2 red:1 blue:1</p>
</blockquote>
<p>去查一本单词及其频率的字典</p>
<pre><code>aa = 'one fish two fish'
bb = aa.split(' ')
cc = {x:bb.count(x) for x in bb}
>>> cc
{'fish': 2, 'two': 1, 'one': 1}
</code></pre>