如何计算列表中元素的频率?

2024-04-26 06:03:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在列表中找到元素的频率

a = [1,1,1,1,2,2,2,2,3,3,4,5,5]

输出->

b = [4,4,2,1,2]

我还想从

a = [1,2,3,4,5]

Tags: gt元素列表频率
3条回答

在Python2.7(或更新版本)中,可以使用^{}

import collections
a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
counter=collections.Counter(a)
print(counter)
# Counter({1: 4, 2: 4, 3: 2, 5: 2, 4: 1})
print(counter.values())
# [4, 4, 2, 1, 2]
print(counter.keys())
# [1, 2, 3, 4, 5]
print(counter.most_common(3))
# [(1, 4), (2, 4), (3, 2)]

如果您使用的是Python2.6或更早版本,可以下载它here

Python 2.7+引入了字典理解。从列表中构建字典将使您获得计数并消除重复项。

>>> a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
>>> d = {x:a.count(x) for x in a}
>>> d
{1: 4, 2: 4, 3: 2, 4: 1, 5: 2}
>>> a, b = d.keys(), d.values()
>>> a
[1, 2, 3, 4, 5]
>>> b
[4, 4, 2, 1, 2]

由于列表是有序的,因此您可以执行以下操作:

a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
from itertools import groupby
[len(list(group)) for key, group in groupby(a)]

输出:

[4, 4, 2, 1, 2]

相关问题 更多 >