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

Python入門:値が昇順に並んでいる辞書だけをフィルタリングする方法

Pythonでは、辞書の値が順序どおり(昇順)に並んでいるものだけをリストから抽出したい場合、「sorted」メソッドとリスト内包表記を組み合わせることで簡単に実現できます。

サンプルコード

以下はその具体的な実装例です。

my_list = [{'python': 2, 'is': 8, 'fun': 10},
   {'python': 1, 'for': 10, 'coding': 9},
   {'cool': 3, 'python': 4}]

print("The list is :")
print(my_list)

my_result = [index for index in my_list if sorted(
   list(index.values())) == list(index.values())]

print("The resultant dictionary is :")
print(my_result)

実行結果

The list is :
[{'python': 2, 'fun': 10, 'is': 8}, {'python': 1, 'coding': 9, 'for': 10}, {'python': 4, 'cool': 3}]
The resultant dictionary is :
[{'python': 1, 'coding': 9, 'for': 10}]

コードの解説

  • まず、複数の辞書を含むリストを定義し、その内容をコンソールに表示します。

  • 次に、リスト内包表記を使ってリストの各辞書を順番に走査します。「sorted」メソッドで辞書の値(values)を取得して昇順に並べ替え、その結果が元の値の並びと完全に一致するかどうかを判定します。

  • 値がすでに昇順に並んでいる辞書のみが条件を満たすため、一致した辞書だけが新しいリストに残ります。上記の例では、2つ目の辞書「{'python': 1, 'coding': 9, 'for': 10}」だけが値の昇順(1 → 9 → 10)を満たしています。

  • このフィルタリング結果は変数 my_result に代入され、最後にコンソールへ出力されます。

ポイント: Python 3.7以降の辞書は挿入順序を保持するため、list(index.values()) は値が挿入された順序どおりに返されます。これにより、「sortedした結果と元の並びを比較する」という手法で、値が昇順に並んでいるかどうかを正確に判定できます。なお、降順の並びを判定したい場合は、sorted(..., reverse=True) を使うことで同様に対応できます。

  1. Pythonでリストから偶数だけを抽出する方法(forループ・whileループ・filter()の使い方)

    データ分析では、特定の条件を満たす値だけをリストから抽出(フィルタリング)する処理が必要になることがよくあります。本記事では、Pythonを使ってリストから偶数の値のみを取り出す方法を、複数のアプローチごとにわかりやすく解説します。基本的な考え方はシンプルです。リストの各要素を順番に取り出し、2で割った余りを確認します。余りが0であればその要素は偶数と判断できます。こうして判定した偶数だけを集めて新しいリストを作成すれば、それがフィルタリング条件を適用した結果となります。それでは、代表的な3つの実装方法を見ていきましょう。1. forループを使う方法最もシンプルで直感的なのが、forループを使

  2. Pythonで辞書のリストを値でソートする方法|sorted関数とlambdaの使い方

    本記事では、複数の辞書を格納したリストを、各辞書が持つ値(value)に基づいて並べ替える方法を解説します。 サンプルとして使う辞書には、「name(名前)」と「roll(出席番号)」という2つのキーが含まれています。まずはPythonの組み込み関数 sorted() とラムダ式(lambda)を組み合わせて、roll の値で昇順にソートした結果を表示します。 続いて、name と roll の両方を組み合わせた条件でのソート、そして roll の値で降順にソートする方法まで、順番に見ていきましょう。 サンプルコード # 辞書のリストを初期化 my_list1 = [{ name : A