Python 创建唯一输出的不同方法
问题: 使用infle和outfile,我试图为infle中的每一行向outfile写入唯一的单词和频率。例如,给定“一条鱼两条鱼”,输出将是1:12:1鱼:2(顺序不重要)。我能够成功地做到这一点,但使用了课堂上没有教过的东西。这是set函数,它自动获取列表中的唯一单词 我的问题: 有没有其他方法可以在不使问题过于复杂的情况下实现相同的输出?我想可能会在列表中添加单词,但我无法让它起作用。感谢您的任何帮助 我的工作代码使用set函数Python 创建唯一输出的不同方法,python,function,file,file-io,Python,Function,File,File Io,问题: 使用infle和outfile,我试图为infle中的每一行向outfile写入唯一的单词和频率。例如,给定“一条鱼两条鱼”,输出将是1:12:1鱼:2(顺序不重要)。我能够成功地做到这一点,但使用了课堂上没有教过的东西。这是set函数,它自动获取列表中的唯一单词 我的问题: 有没有其他方法可以在不使问题过于复杂的情况下实现相同的输出?我想可能会在列表中添加单词,但我无法让它起作用。感谢您的任何帮助 我的工作代码使用set函数 def wordsByLine(inFile,outFile
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')
填充:
一条鱼两条鱼
红鱼蓝鱼
输出文件:
鱼:21:1 2:1
鱼:2红:1蓝:1
您可以使用如下所示的计数器。我使用列表代替文件,但它应该适用于文件中的每一行
a = ['one fish two fish','red fish blue fish']
from collections import Counter
for i in a:
print ["{0}:{1}".format(i,j) for i,j in Counter(i.split()).most_common()]
导致
['fish:2', 'two:1', 'one:1']
['fish:2', 'blue:1', 'red:1']
您可以将此输出写入文件,以获取单词及其频率的词典
aa = 'one fish two fish'
bb = aa.split(' ')
cc = {x:bb.count(x) for x in bb}
>>> cc
{'fish': 2, 'two': 1, 'one': 1}