Pythonでタプルのリストから一意なキーの出現回数をカウントする方法
Pythonでは、タプルのリストに含まれる一意な値(ユニークな値)の出現回数をカウントしたい場面があります。そのような場合には、collectionsモジュールのdefaultdict、set演算子、そしてappendメソッドを組み合わせることで効率的に実現できます。
サンプルコード
以下に具体的な実装例を示します。
from collections import defaultdict
my_list = [(12, 32), (12, 21), (21, 32), (89, 21), (71, 21), (89, 11), (99, 10), (8, 23), (10, 23)]
print("The list is :")
print(my_list)
my_result = defaultdict(list)
for element in my_list:
my_result[element[1]].append(element[0])
my_result = dict(my_result)
result_dictionary = dict()
for key in my_result:
result_dictionary[key] = len(list(set(my_result[key])))
print("The resultant list is :")
print(result_dictionary)
実行結果
The list is :
[(12, 32), (12, 21), (21, 32), (89, 21), (71, 21), (89, 11), (99, 10), (8, 23), (10, 23)]
The resultant list is :
{32: 2, 21: 3, 11: 1, 10: 1, 23: 2}
コードの解説
collectionsモジュールからdefaultdictをインポートします。タプルのリストを定義し、コンソールに表示します。
値としてリストを持つ空の
defaultdictを作成します。リストを反復処理し、各タプルの2番目の要素をキー、1番目の要素を値として辞書に追加(
append)します。defaultdictを通常の辞書に変換します。結果を格納するための別の空の辞書を作成します。
各キーに対して反復処理を行い、
set演算子を使って重複を除去した一意な要素を取得します。一意な要素をリストに変換し、その長さ(
len)をカウントとして新しい辞書に代入します。最終的な結果の辞書がコンソールに出力されます。
ポイント
この方法では、タプルの2番目の要素をキーとしてデータをグループ化し、それぞれのキーに紐づく1番目の要素の中から一意な値の数を数えています。例えば、キー「32」には「12」と「21」の2つの一意な値が対応しているため、カウントは「2」となります。defaultdict(list)を使用することで、キーの存在確認を行わずに直接リストへ要素を追加できる点が大きな利点です。これにより、コードがシンプルになり、可読性も向上します。
-
【Python】タプルが出現するまでリスト内の要素数をカウントする方法
リストAが与えられたとき、このリストにはネストされたタプルが含まれています。ここでの課題は、タプルの要素に到達するまで、リスト内の要素数をカウントすることです。この処理には、Python組み込みの isinstance() 関数を使用します。 isinstance() 関数は2つの引数を受け取ります。第1引数の「object」は判定対象となるオブジェクト、第2引数の「classinfo」はクラス・型、あるいはクラスや型のタプルです。オブジェクトが指定したクラス(またはそのサブクラス)のインスタンスである場合、もしくはタプル内のいずれかの型に一致する場合に True を返し、それ以外の場合は F
-
Pythonでタプルの要素値を更新する方法!list()とtuple()を使った手順を解説
Pythonのタプルはイミュータブル(変更不可)なオブジェクトPythonのタプルはイミュータブル(不変)なオブジェクトです。そのため、タプルの要素を直接書き換えようとする操作は許可されておらず、エラーが発生します。ただし、いくつかの手順を踏むことで、実質的にタプルの要素値を更新することが可能です。ここでは最も一般的な回避策(ワークアラウンド)を紹介します。タプルをリストに変換してから更新する手順まず、組み込み関数 list() を使ってタプルをリストに変換します。リストはミュータブル(変更可能)なオブジェクトなので、特定のインデックスの要素に対して新しい値を代入することで、自由に内容を更新で