【问题标题】:Counter in PythonPython中的计数器
【发布时间】:2023-03-16 19:42:02
【问题描述】:

有没有办法在 Counter 中收集与出现次数有关的值?

示例:
假设我有一个列表:

list = ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd']

当我做计数器时:

Counterlist = Counter(list)

我会得到:

Counter({'b': 3, 'a': 3, 'c': 3, 'd': 2})

然后我可以选择让我们说 a 并得到 3:

Counterlist['a'] = 3

但是我如何选择出现的数字“3”?
比如:

Counterlist[3] = ['b', 'a', 'c'] 

这可能吗?

【问题讨论】:

  • Counter 用于过滤要计数的项目,而不是相反。最简单的反转方法是将其传递给defaultdict(list)
  • [v for v in Counterlist if Counterlist[v] == 3]

标签: list python-3.x counter


【解决方案1】:

你可以这样写

import collections

my_data = ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd']
result = collections.defaultdict(list)
for k, v in collections.Counter(my_data).items():
    result[v].append(k)

然后访问result[3] 以获取具有该计数的字符。

【讨论】:

  • 哇,真优雅。谢谢@Simeon Visser!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多