python - 构造列表中出现次数的列表

标签 python list

假设我得到一个元素列表,例如

[1,1,2,3,3,1,2]

["a","a","b","c","c"]

给定这样一个列表,我想构造一个(不一定是有序的)列表,其中包含每个元素的出现次数。例如,第一个列表应该返回

[3,2,2]

因为列表中有 3 个一、2 个二和 3 个三。第二个应该类似地返回

[2,1,2]

在 Python 中执行此操作的最佳方法是什么?

最佳答案

construct a (not necessarily ordered) list containing the number of occurrences of each element

既然你不担心顺序,你可以简单地使用collections.Counter , 像这样

>>> from collections import Counter
>>> Counter([1, 1, 2, 3, 3, 1, 2]).values()
[3, 2, 2]
>>> Counter(["a", "a", "b", "c", "c"]).values()
[2, 2, 1]

Counter 对象只不过是一个字典,其键在可迭代对象中找到,值将是在可迭代对象中找到的相应键的实际次数。您可以打印 Counter 对象并检查它,就像这样

>>> Counter([1, 1, 2, 3, 3, 1, 2])
Counter({1: 3, 2: 2, 3: 2})
>>> Counter(["a", "a", "b", "c", "c"])
Counter({'a': 2, 'c': 2, 'b': 1})

由于您只对出现的次数感兴趣,因此我们只采用 values()

关于python - 构造列表中出现次数的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28745247/

相关文章:

python - while 循环中回溯 (python 3.x)

python - 添加时间戳打印功能

python - readline 被 ANSI 转义序列混淆

python - python语言中列表理解的两个列表

c# - List<Object> 的 XML 序列化

list - 编辑列表的 F# 函数

python - PyQt QListWidget 自定义项

python - 不使用 OpenCV 获取图像掩码

java - Vert.x java List<Futures> 参数化

作为向量的 Clojure 惰性序列