1
一個物品櫃比方說,我有一個Counter
對象:Counter({'test': 2, 'this': 1, 'is': 1})
遍歷由計數
我想遍歷這個對象通過以下方式:
c = Counter({'test': 2, 'this': 1, 'is': 1})
for i,s in my_counter_iterator(c):
print i, ":", s
>> 1 : ['this', 'is']
>> 2 : ['test']
我如何做有效(這段代碼應該在每個請求的Web服務器上運行......)?
編輯
我都試過,但我有感覺有更有效的辦法。在那兒?
from itertools import groupby
for k,g in groupby(sorted(c.keys(), key=lambda x: c[x]),key=lambda x: c[x]):
print k, list(g)
1 ['this', 'is']
2 ['test']
這比使用'groupby'進行排序和分組效率更高嗎? – zenpoy
在漸近的意義上,是的。排序是O(nlogn),這個操作是O(n)。你的情況更快嗎?只有實驗才能告訴你。 :-) –
當然是...它只需要兩倍的內存,但沒關係。 – zenpoy