Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのcollectionsモジュールでリスト内の全要素の出現回数をカウントする方法

Pythonのリストは重複した要素を許容しているため、同じ要素が複数回含まれることがあります。リストにおける要素の「頻度」とは、ある要素がリスト内に何回出現するかを示すものです。本記事では、標準ライブラリのcollectionsモジュールが提供するCounter関数を使って、リスト内の各要素の出現回数を簡単に求める方法を解説します。

構文

Counter(list)
※ list には、リストなどのイテラブル(反復可能オブジェクト)を指定します

Counterはdictのサブクラスであり、渡されたイテラブル内の各要素をキー、その出現回数を値として保持するオブジェクトを返します。

使用例

以下のコードでは、Counter()で各要素の頻度を記録し、items()メソッドを使ってCounterの結果からキーと値を1つずつ取り出し、整形された形式で出力しています。

from collections import Counter
list = ['Mon', 'Tue', 'Wed', 'Mon','Mon','Tue']

# 各要素の出現回数を取得
list_freq= (Counter(list))

# Counterの結果をそのまま出力
print(list_freq)

# ループを使って結果を見やすく表示
for key, value in list_freq.items():
    print(key, " has count ", value)

実行結果

上記のコードを実行すると、次のような結果が得られます。

Counter({'Mon': 3, 'Tue': 2, 'Wed': 1})
Mon has count 3
Tue has count 2
Wed has count 1

このように、Counterを使えばループや条件分岐を自前で書くことなく、わずか数行のコードで要素の頻度集計が実現できます。曜日名だけでなく、数値や文字列など任意のハッシュ可能なオブジェクトに対しても同様に利用できるため、ログ解析やデータ集計などの場面で非常に便利です。

  1. Pythonで配列リスト内の0と1を分離する方法

    リスト内包表記(List Comprehension)はPythonで広く使われている人気のテクニックです。ここでは、この手法を活用して配列内の0と1を分離してみましょう。 まず、ユーザーから入力を受け取って配列を作成します。配列の要素は0と1がランダムな順序で含まれているものとします。そして、0を配列の左側へ、1を右側へと分離させます。 具体的には、配列を走査しながら要素を2つの異なるリストに振り分けます。片方のリストには0だけを、もう片方のリストには1だけを格納し、最後にその2つのリストを連結することで目的の結果を得られます。 実行例 入力: a=[0,1,1,0,0,1] 出力: [0

  2. Pythonモジュール内のすべての関数を一覧表示する方法

    dir()関数でモジュールの属性とメソッドを取得するPythonでは、dir()関数を使うことで、指定したモジュールが持つすべての属性やメソッド(関数)の一覧を取得できます。例として、標準ライブラリのmathモジュールに対して使ってみましょう。>>> import math>>> dir(math)[__doc__, __name__, __package__, acos, acosh, asin, asinh, atan, atan2, atanh, ceil, copysign, cos, cosh, degrees, e, erf, erfc, exp