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

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と「+」演算子を組み合わせることで、複数のタプルリストにまたがる同一キーの数値を簡単かつ効率的に集計できます。データの集約処理やログ解析など、さまざまな場面で応用できるテクニックです。

  1. Pythonでタプルのリストからタプルを組み合わせる方法

    データ分析では、Pythonが提供するさまざまなデータ構造を組み合わせて扱うことがよくあります。リストにはタプルを要素として格納できるため、「リストの中にタプルがある」という構造も簡単に作れます。本記事では、タプルの各要素を別の要素と組み合わせて、新しい「タプルの組み合わせリスト」を生成する方法を、具体的なコード例とともに解説します。方法1:forループ(リスト内包表記)を使うまずは最も基本的な方法です。リスト内包表記の中でforループをネストし、各タプルからリスト部分の要素を1つずつ取り出しながら、同じタプル内のもう1つの要素(ここでは曜日の文字列)とペアを作成していきます。コード例Alis

  2. 【Python入門】リスト・タプル・辞書の違いを徹底解説

    Pythonの3大コレクション:リスト、タプル、辞書 Pythonには複数のデータをまとめて扱うためのコレクション型が用意されています。中でもよく使われるのがリスト(list)、タプル(tuple)、辞書(dict)の3つです。それぞれ特徴が異なるため、用途に応じて使い分けることが重要です。 基本的な違いの概要 リストとタプルはシーケンス(順序付き)オブジェクトであり、要素を順番に並べて管理します。一方、辞書はキーと値のペアを格納するハッシュテーブル構造です。 リストとタプルは「順序を持つコレクション」ですが、辞書は「順序を持たないコレクション」として扱われます。 リストと辞書はミュータブ