如何在python中优化word_count

Hum*_*mad 0 python optimization word-count

我给了n个单词(1≤n≤10^ 5).有些词可能重复.对于每个单词,我必须输出它出现的次数.但输出顺序应与单词首次出现的顺序一致.

我有一个问题的工作程序,但对于大输入我正在超时.这是我解决问题的方法:

n=int(input())
l=[]
ll=[]

for x in range(n):
    l.append(raw_input())
    if l[x] not in ll:
        ll.append(l[x])

result = [ l.count(ll[x]) for x in range(len(ll)) ]

for x in range(len(result)):
    print result[x],
Run Code Online (Sandbox Code Playgroud)

jme*_*jme 5

由子类使用一个有序计数器OrderedDictCounter:

from collections import Counter, OrderedDict

class OrderedCounter(Counter, OrderedDict):
    pass

counts = OrderedCounter(['b', 'c', 'b', 'b', 'a', 'c'])
for k, c in counts.items():
    print(k, c)
Run Code Online (Sandbox Code Playgroud)

哪个印刷品:

b 3
c 2
a 1
Run Code Online (Sandbox Code Playgroud)

查看文档collections模块更完整的配方,其中包括一__repr__OrderedCounter.