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

Pythonで辞書(dict)をソートする方法|キー・値で並べ替える2つのテクニック

Pythonの辞書(dict)は、キーと値のペアで構成されるデータ構造です。辞書をソートするには、主に以下の2つの基準があります。

キーでソート - キーを昇順に並べ替えます。値の順序は考慮されません。

値でソート - 値を昇順に並べ替えます。

方法1:キーで辞書をソートする

この方法では、辞書をキーの昇順に並べ替えます。

入力:

{2:90, 1: 100, 8: 3, 5: 67, 3: 5}

出力:

{1:100, 2:90, 3:5, 5:67, 8:3}

上記のように、辞書がキーの順序に従ってソートされていることがわかります。

コード例

dic={2:90, 1: 100, 8: 3, 5: 67, 3: 5}
dic2={}
for i in sorted(dic):
    dic2[i]=dic[i]
print(dic2)

出力結果

{1: 100, 2: 90, 3: 5, 5: 67, 8: 3}

コードの解説

  • ソート対象となる辞書を宣言します。

  • ソート済みのキーと値のペアを格納するための空の辞書を宣言します。

  • sorted(dic) は、dic のすべてのキーをソートした順序で返します。返されるのはキーのみで、キーと値のペアではありません。sorted(dic) の結果は [1, 2, 3, 5, 8] になります。

  • ソートされた各キーについて、そのキーと対応する値を dic2 に追加します。

  • 最終的に、dic2 にはキーが昇順にソートされたすべてのキーと値のペアが格納されます。

方法2:値で辞書をソートする

この方法では、辞書を値の昇順に並べ替えます。

入力:

{2:90, 1: 100, 8: 3, 5: 67, 3: 5}

出力:

{8:3, 3:5, 5:67, 2:90, 1:100}

上記のように、辞書が値の順序に従ってソートされていることがわかります。

  • 辞書を値でソートするには、sorted() メソッドと items() メソッドを組み合わせて使用します。

  • items() は、辞書のアイテム(キーと値のペア)を取得するために使用されます。

  • key=lambda x: x[1] は、ラムダ関数を使用したソートの仕組みです。x[1] は各ペアの値(インデックス1)を指します。

  • これにより、ソートされたキーと値のペアが得られ、dict() を使って辞書形式に変換されます。

コード例

dic={2:90, 1: 100, 8: 3, 5: 67, 3: 5}
dic2=dict(sorted(dic.items(),key= lambda x:x[1]))
print(dic2)

出力結果

{8: 3, 3: 5, 5: 67, 2: 90, 1: 100}

まとめ

Pythonで辞書をソートする場合、キーで並べ替えるなら sorted(dic) をループで処理する方法、値で並べ替えるなら sorted() と items() を組み合わせてラムダ関数で指定する方法が便利です。用途に応じて使い分けることで、データを効率的に整理できます。

  1. Pythonで文字列の文字をアルファベット順に並べ替える方法

    sorted()関数とjoin()メソッドを組み合わせる Pythonで文字列内の文字をアルファベット順に並べ替えるには、組み込み関数のsorted()を使用します。sorted()は並べ替えられた文字のリストを返すため、その後にjoin()メソッドでリストの要素を連結すると、並べ替え済みの文字列として取得できます。 >>> s = helloworld >>> .join(sorted(s)) dehllloorw この例では、文字列helloworldに含まれるすべての文字(重複を含む)がアルファベット順に並べ替えられ、dehllloorwという結果が得

  2. Pythonで文字列のリストを並べ替える方法:sort()とsorted()の使い分け

    Pythonでは、文字列のリストを並べ替える方法が2つ用意されています。リスト自体を直接変更するsort()メソッドと、元のリストを保持したまま新しい並べ替え済みリストを作成するsorted()関数です。それぞれの特徴と使い方を解説します。 sort()メソッドでリストをその場で並べ替える sort()は、リストそのものを並べ替える「in-place(破壊的)」な操作です。元のリストの順序が直接変更されるため、戻り値を受け取る必要はありません。 >>> a = [Hello, My, Followers] >>> a.sort() >>>