python出现的次数最多的元素_Python实用黑科技——找出序列里面出现次数最多的元素...

需求:

如何从一个序列中快速获取出现次数最多的元素。

方法:

利用collections.Counter类可以解决这个问题,特别是他的most_common()方法更是处理此问题的最快途径。比如,现在有一个单词的序列,你想快速获取哪个单词出现频率最高,就可以这么做:

In [22]: words = ['look', 'into', 'my', 'eyes', 'look', 'into',

...: 'my', 'eyes', 'the', 'eye', 'the', 'eyes', 'not',

...: 'around', 'the', 'eyes', "don't", 'look', 'around',

...: 'the', 'eyes', 'look', 'into', 'my', 'eyes', "you're",

...: 'under'

...: ]

In [23]: from collections import Counter

In [24]: word_counts = Counter(words)

In [25]: print(word_counts.most_common(3))

[('eyes', 6), ('look', 4), ('the', 4)]

事实上,Counter对象是一个元素和其数目对应关系所构成的字典, 例如:

In [26]: word_counts['not']

Out[26]: 1

In [27]: word_counts['into']

Out[27]: 3

扩展:

如果你想手动扩展单词数目,可以使用下面的方式:

In [28]: more_words = ['why', 'are', 'you', 'not', 'looking', 'in',

...: 'my', 'eyes']

In [29]: for word in more_words:

...: word_counts[word] += 1

...: # word_counts.update(more_words)

In [30]: word_counts['eyes']

Out[30]: 7

Counter类还有一些类似于数学运算的方法,使用起来也是相当方便:

In [31]: a = Counter(words)

In [32]: b = Counter(more_words)

In [33]: a

Out[33]:

Counter({'around': 2,

"don't": 1,

'eye': 1,

'eyes': 6,

'into': 3,

'look': 4,

'my': 3,

'not': 1,

'the': 4,

'under': 1,

"you're": 1})

In [34]: b

Out[34]:

Counter({'are': 1,

'eyes': 1,

'in': 1,

'looking': 1,

'my': 1,

'not': 1,

'why': 1,

'you': 1})

In [35]: c = a + b

In [36]: c

Out[36]:

Counter({'are': 1,

'around': 2,

"don't": 1,

'eye': 1,

'eyes': 7,

'in': 1,

'into': 3,

'look': 4,

'looking': 1,

'my': 4,

'not': 2,

'the': 4,

'under': 1,

'why': 1,

'you': 1,

"you're": 1})

In [37]: d = b - a

In [38]: d

Out[38]: Counter({'are': 1, 'in': 1, 'looking': 1, 'why': 1, 'you': 1})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值