0
我有一句話「快狐跳過懶狗」,我已經統計了這個句子中每個單詞出現的次數。輸出應該是這樣的:打印單詞的頻率,用單句排成一行
brown:1,dog:1,fox:1,jumps:1,lazy:1,over:1,quick:1,the:2
應該有這種輸出的字符之間沒有空格,且應該有字/數字之間的逗號。 從我的程序的輸出是這樣的:
,brown:1,dog:1,fox:1,jumps:1,lazy:1,over:1,quick:1,the:2
我發現,有前「棕色」逗號地方。有沒有更簡單的方法來打印這個?
filename = os.path.basename(path)
with open(filename, 'r+') as f:
fline = f.read()
fwords = fline.split()
allwords = [word.lower() for word in fwords]
sortwords = list(set(allwords))
r = sorted(sortwords, key=str.lower)
finalwords = ','.join(r)
sys.stdout.write(str(finalwords))
print '\n'
countlist = {}
for word in allwords:
try: countlist[word] += 1
except KeyError: countlist[word] = 1
for c,num in sorted(countlist.items()):
sys.stdout.write(",{:}:{:}".format(c, num))
的OP已經有一本字典單詞計數 - 'countlist',這是無可爭議的命名。 OP的計數方法是線性的,因此它會比'.count'更快。 – DSM
@DSM,我知道OP有一個詞計數字典。這是一種替代方式,可能更容易(但是在很長的列表中肯定會變慢)的方式。我想我會添加一個使用'defaultdict'的例子。 – mhlester