あれもPython,これもPython

Pythonメモ※本サイトはアフィリエイトを利用しています

Pythonでリストから出現が一番大きいものを探す(modeを使った小技)

完全に小ネタです。
リストの中で一番多くでてくる項目を出したいとき、
Counterを使ったりPandasで数を出して、並べたり、
自分でアルゴリズムを書いたりすると思います。

そんなときに、とりあえず、一番多く出現したものが何かを知りたい時、
デフォルトの統計モジュールstatisticsの最頻値をとるmodeを使うと一瞬でできます。

import statistics

test_list = [
    '一番多いやつ',
    '一番多いやつ',
    '一番多いやつ',
    '一番多いやつ',
    '二番目に多いやつ',
    '二番目に多いやつ',
    '三番目に多いやつ',

]

#実は数値以外にも使える
statistics.mode(test_list)
#'一番多いやつ'

#イテレータっぽければいける
statistics.mode("僕はPythonが好きだ!!!")
#'!'

statistics.mode([('a','b'),('a','b'),('a','c')])
#('a','b')

なお、同数がある場合はエラーを返してしまうので、
collections.Counter(list).most_commonを使うか、
Python3.8以降ならstatistics.multimodeを使うことになります。

▼Counterは結構好きなので、昔書いた記事はこちら

esu-ko.hatenablog.com