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

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

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]

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

慕桂英4014372
浏览 598回答 3
3回答

料青山看我应如是

由于列表是有序的,您可以这样做: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]

慕田峪4524236

在Python2.7(或更新版本)中,您可以使用collections.Counter: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或更高版本,可以下载这里.

斯蒂芬大帝

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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python