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

【Python】最初の要素の出現に基づいてタプルのリストを並べ替える方法

タプルのリストを、最初の要素の出現に基づいて並べ替えたい場合には、dict.fromkeys メソッドを活用すると便利です。

まず前提として、リストは異種の値(整数、浮動小数点数、文字列など、あらゆるデータ型のデータ)を格納できるデータ構造です。

「タプルのリスト」とは、リストの中に複数のタプルが格納された構造のことを指します。

dict.fromkeys メソッドは、指定したキーと値を持つ新しい辞書を返すメソッドです。これにより、重複する要素を自動的に取り除きながら、各キーに関連付けられた値を整理できます。

以下に具体的な実装例を示します。

サンプルコード

def sort_on_occurence(my_lst):
   my_dict = {}
   for i, j in my_lst:
      my_dict.setdefault(i, []).append(j)
   return([(i, *dict.fromkeys(j), len(j))
      for i, j in my_dict.items()])

my_list = [(1, 'Harold'), (12, 'Jane'), (4, 'Paul'), (7, 'Will')]
print("The list of tuples is")
print(my_list)
print("The list after sorting by occurence is")
print(sort_on_occurence(my_list))

実行結果

The list of tuples is
[(1, 'Harold'), (12, 'Jane'), (4, 'Paul'), (7, 'Will')]
The list after sorting by occurence is
[(1, 'Harold', 1), (12, 'Jane', 1), (4, 'Paul', 1), (7, 'Will', 1)]

コードの解説

  • まず、タプルのリストを引数として受け取る sort_on_occurence という関数を定義します。
  • 関数内では、新しい空の辞書を作成します。
  • タプルのリストを反復処理しながら、setdefault メソッドを使って空の辞書内にデフォルト値を設定し、同じキーを持つ要素をまとめていきます。
  • その後、タプルのリストを定義し、コンソールに表示します。
  • 定義済みの関数に対して、このタプルのリストを引数として渡して呼び出します。
  • 最終的な結果として、各タプルに対応する要素と出現回数が含まれたリストがコンソールに出力されます。

このように、setdefaultdict.fromkeys を組み合わせることで、最初の要素をキーとしてデータをグループ化し、重複を排除した上で出現回数を付加した結果を簡単に取得することができます。

  1. Pythonでタプル内に含まれるリスト要素の出現回数をカウントする方法

    Pythonでは、リストとタプルを組み合わせてデータを扱う場面が多くあります。本記事では、リストの要素がタプル内にいくつ含まれているか(出現回数)をカウントする方法を、2つのアプローチから解説します。collections.Counterを使う方法まず紹介するのは、標準ライブラリcollectionsモジュールのCounterクラスを使った方法です。Counterを使うと、タプル内の各要素の出現回数を簡単に集計できます。その後、for文とin演算子を組み合わせて、リストに含まれる要素に対応するカウント値だけを合計します。コード例from collections import Counter A

  2. Pythonでfloat要素を基準にタプルをソートする方法

    この記事では、float型の数値を含むタプルのリストを、その数値を基準にソートする方法を解説します。Pythonの組み込み関数 sorted() を使った方法を中心に、key 引数や reverse 引数の使い方もあわせて紹介します。実行例たとえば、名前と数値(文字列形式)のペアからなるタプルのリストを、数値が大きい順に並べ替えるケースを考えてみましょう。入力: tuple = [(AAA, 10.265), (BBB, 24.107), (CCC, 26.541), (DDD, 14.256), (EEE, 11.365)] 出力: [(CCC, 26.541), (BBB, 24.107