首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Pythonic式的以降序遍历collections.Counter()实例的方式?

Pythonic式的以降序遍历collections.Counter()实例的方式?
EN

Stack Overflow用户
提问于 2012-06-15 00:03:54
回答 3查看 68.5K关注 0票数 54

在Python2.7中,我希望按计数的降序遍历collections.Counter实例。

代码语言:javascript
复制
>>> import collections
>>> c = collections.Counter()
>>> c['a'] = 1
>>> c['b'] = 999
>>> c
Counter({'b': 999, 'a': 1})
>>> for x in c:
        print x
a
b

在上面的示例中,元素似乎是按照添加到计数器实例中的顺序进行迭代的。

我想从最高到最低遍历列表。我看到计数器的字符串表示可以做到这一点,只是想知道是否有推荐的方法来实现这一点。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-15 00:06:17

您可以遍历c.most_common()以获得所需顺序的项。另请参阅documentation of Counter.most_common()

示例:

代码语言:javascript
复制
>>> c = collections.Counter(a=1, b=999)
>>> c.most_common()
[('b', 999), ('a', 1)]
票数 61
EN

Stack Overflow用户

发布于 2017-06-28 11:28:38

以下是迭代Python集合中的计数器的示例:

代码语言:javascript
复制
>>>def counterIterator(): 
...  import collections
...  counter = collections.Counter()
...  counter.update(('u1','u1'))
...  counter.update(('u2','u2'))
...  counter.update(('u2','u1'))
...  for ele in counter:
...    print(ele,counter[ele])
>>>counterIterator()
u1 3
u2 3
票数 13
EN

Stack Overflow用户

发布于 2017-05-03 00:48:15

你的问题已经解决了,只是返回降序,但这里是如何做的一般。如果其他人从谷歌来到这里,这里是我必须解决的方法。基本上,上面的内容返回了collections.Counter()中的字典的键。要获得值,您只需将键传递回字典,如下所示:

代码语言:javascript
复制
for x in c:
    key = x
    value = c[key]

我有一个更具体的问题,我有字数统计,并希望过滤掉低频的。这里的技巧是制作collections.Counter()的副本,否则当您尝试从字典中删除它们时,您将得到"RuntimeError:字典在迭代期间改变大小“。

代码语言:javascript
复制
for word in words.copy():
    # remove small instance words
    if words[word] <= 3:
        del words[word]
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11037005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档