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