您好,登錄后才能下訂單哦!
本文實例講述了Python找出序列中出現次數最多的元素。分享給大家供大家參考,具體如下:
問題:找出一個元素序列中出現次數最多的元素是什么
解決方案:collections模塊中的Counter類正是為此類問題所設計的。它的一個非常方便的most_common()
方法直接告訴你答案。
# Determine the most common words in a list 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' ] from collections import Counter word_counts = Counter(words) top_three = word_counts.most_common(3) print(top_three) # outputs [('eyes', 8), ('the', 5), ('look', 4)] # Example of merging in more words 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}) >>> # substract counts >>> 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對象都是你手邊的得力工具。比起利用字典自己手寫算法,更應采用該方式完成任務。
(代碼摘自《Python Cookbook》)
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。