Pythonでタプルのリストをキーごとにグループ化して合計する方法
タプルのリストをキーごとにグループ化して合計値を求めたい場合には、collectionsモジュールの「Counter」クラスと「+」演算子を組み合わせて使用します。
Counterは、ハッシュ可能なオブジェクトを数え上げるためのdictのサブクラスです。呼び出されると、リストやタプルといったイテラブルなデータから自動的にハッシュテーブル(辞書構造)を生成してくれます。
Counterは、カウントが0でないすべての要素を対象としたイテレータを返すため、集計処理に非常に便利です。また、「+」演算子は通常、数値の加算や文字列の連結に使われますが、Counterオブジェクト同士を合算する際にも活用できます。
以下に具体的な実装例を示します。
サンプルコード
from collections import Counter
my_list_1 = [('Hi', 14), ('there', 16), ('Jane', 28)]
my_list_2 = [('Jane', 12), ('Hi', 4), ('there', 21)]
print("最初のリスト:")
print(my_list_1)
print("2番目のリスト:")
print(my_list_2)
cumulative_val_1 = Counter(dict(my_list_1))
cumulative_val_2 = Counter(dict(my_list_2))
cumulative_val_3 = cumulative_val_1 + cumulative_val_2
my_result = list(cumulative_val_3.items())
print("タプルのリストをグループ化した合計結果:")
print(my_result)
実行結果
最初のリスト:
[('Hi', 14), ('there', 16), ('Jane', 28)]
2番目のリスト:
[('Jane', 12), ('Hi', 4), ('there', 21)]
タプルのリストをグループ化した合計結果:
[('Hi', 18), ('there', 37), ('Jane', 40)]
コードの解説
- 必要なモジュール(collectionsのCounter)をインポートします。
- キーと数値を持つ2つのタプルのリストを定義し、コンソールに表示します。
- それぞれのタプルのリストをdict()関数で辞書に変換し、さらにCounterオブジェクトとして初期化します。
- 「+」演算子を使って、2つのCounterオブジェクトを同じキーごとに加算します。
- items()メソッドでキーと値のペアを取得し、list()でリスト形式に変換します。
- この集計結果を変数に格納します。
- 最後に、その変数の内容をコンソールに出力します。
このように、Counterと「+」演算子を組み合わせることで、複数のタプルリストにまたがる同一キーの数値を簡単かつ効率的に集計できます。データの集約処理やログ解析など、さまざまな場面で応用できるテクニックです。
-
Pythonでタプルのリストからタプルを組み合わせる方法
データ分析では、Pythonが提供するさまざまなデータ構造を組み合わせて扱うことがよくあります。リストにはタプルを要素として格納できるため、「リストの中にタプルがある」という構造も簡単に作れます。本記事では、タプルの各要素を別の要素と組み合わせて、新しい「タプルの組み合わせリスト」を生成する方法を、具体的なコード例とともに解説します。方法1:forループ(リスト内包表記)を使うまずは最も基本的な方法です。リスト内包表記の中でforループをネストし、各タプルからリスト部分の要素を1つずつ取り出しながら、同じタプル内のもう1つの要素(ここでは曜日の文字列)とペアを作成していきます。コード例Alis
-
【Python入門】リスト・タプル・辞書の違いを徹底解説
Pythonの3大コレクション:リスト、タプル、辞書 Pythonには複数のデータをまとめて扱うためのコレクション型が用意されています。中でもよく使われるのがリスト(list)、タプル(tuple)、辞書(dict)の3つです。それぞれ特徴が異なるため、用途に応じて使い分けることが重要です。 基本的な違いの概要 リストとタプルはシーケンス(順序付き)オブジェクトであり、要素を順番に並べて管理します。一方、辞書はキーと値のペアを格納するハッシュテーブル構造です。 リストとタプルは「順序を持つコレクション」ですが、辞書は「順序を持たないコレクション」として扱われます。 リストと辞書はミュータブ