Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
本文实例讲述了Python找出序列中出现次数最多的元素。分享给大家供大家参考,具体如下:
问题:找出一个元素序列中出现次数最多的元素是什么
解决方案:collections模块中的Counter类正是为此类问题所设计的。它的一个非常方便的most_common()方法直接告诉你答案。
#Determinethemostcommonwordsinalist
words=[
'look','into','my','eyes','look','into','my','eyes',
'the','eyes','the','eyes','the','eyes','not','around','the',
'eyes',"don't",'look','around','the','eyes','look','into',
'my','eyes',"you're",'under'
]
fromcollectionsimportCounter
word_counts=Counter(words)
top_three=word_counts.most_common(3)
print(top_three)
#outputs[('eyes',8),('the',5),('look',4)]
#Exampleofmerginginmorewords
morewords=['why','are','you','not','looking','in','my','eyes']
word_counts.update(morewords)#使用update()增加计数
print(word_counts.most_common(3))
>>>================================RESTART================================
>>>
[('eyes',8),('the',5),('look',4)]
[('eyes',9),('the',5),('my',4)]
>>>
在底层实现中,Counter是一个字典,在元素和它们出现的次数间做了映射。
>>>word_counts
Counter({'eyes':9,'the':5,'my':4,'look':4,'into':3,'around':2,'not':2,"don't":1,'under':1,'are':1,'looking':1,"you're":1,'you':1,'why':1,'in':1})
>>>word_counts.most_common(3)#top_three
[('eyes',9),('the',5),('my',4)]
>>>word_counts['not']
2
>>>word_counts['eyes']
9
>>>word_counts['eyes']+1
10
>>>word_counts
Counter({'eyes':9,'the':5,'my':4,'look':4,'into':3,'around':2,'not':2,"don't":1,'under':1,'are':1,'looking':1,"you're":1,'you':1,'why':1,'in':1})
>>>word_counts['eyes']=word_counts['eyes']+1#手动增加元素计数
>>>word_counts
Counter({'eyes':10,'the':5,'my':4,'look':4,'into':3,'around':2,'not':2,"don't":1,'under':1,'are':1,'looking':1,"you're":1,'you':1,'why':1,'in':1})
>>>
增加元素出现次数可以通过手动进行增加,也可以借助update()方法;
另外,Counter对象另一个特性是它们可以同各种数学运算操作结合起来使用:
>>>a=Counter(words)
>>>a
Counter({'eyes':8,'the':5,'look':4,'my':3,'into':3,'around':2,'under':1,"you're":1,'not':1,"don't":1})
>>>b=Counter(morewords)
>>>b
Counter({'not':1,'my':1,'in':1,'you':1,'looking':1,'are':1,'eyes':1,'why':1})
>>>c=a+b
>>>c
Counter({'eyes':9,'the':5,'my':4,'look':4,'into':3,'around':2,'not':2,"don't":1,'under':1,'are':1,'looking':1,"you're":1,'you':1,'in':1,'why':1})
>>>#substractcounts
>>>d=a-b
>>>d
Counter({'eyes':7,'the':5,'look':4,'into':3,'my':2,'around':2,'under':1,"you're":1,"don't":1})
>>>
当面对任何需要对数据制表或计数的问题时,Counter对象都是你手边的得力工具。比起利用字典自己手写算法,更应采用该方式完成任务。
(代码摘自《PythonCookbook》)
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。