logo

Python の OrderedDict

アン OrderedDict キーが最初に挿入された順序を記憶する辞書のサブクラスです。唯一の違いは、 dict() OrderedDict() は、キーの順序の処理にあります。 パイソン

Python における OrderedDict と dict の比較

`OrderedDict` はキーが追加される順序を維持し、反復中に順序が確実に保持されるようにします。対照的に、標準辞書は反復時に特定の順序を保証せず、値を任意の順序で提供します。 `OrderedDict` は、項目の元の挿入順序を保持することで区別されます。

例: この例では、以下のコードは、通常の辞書 (`dict`) と順序付き辞書 (`OrderedDict`) の違いを示しています。まず、挿入順序が保証されていない通常の辞書 (`d`) 内の項目を出力します。



パイソン
# A Python program to demonstrate working of OrderedDict from collections import OrderedDict print('This is a Dict:
') d = {} d['a'] = 1 d['b'] = 2 d['c'] = 3 d['d'] = 4 for key, value in d.items(): print(key, value) print('
This is an Ordered Dict:
') od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key, value)>

出力:

  This is a Dict:  a 1  b 2 c 3 d 4   This is an Ordered Dict:  a 1 b 2 c 3 d 4>

Python 辞書の注文

ここでは Python 辞書の順序付けに関連するさまざまな重要な点があります。ここでは、以下に関連するいくつかの重要な点について説明します。 Python辞書 それらを注文するのは次のとおりです。

  1. キー値の変更
  2. 削除と再挿入
  3. 等価比較
  4. OrderedDict の反転
  5. OrderedDict Popitem Last
  6. 任意の位置にキーを挿入
  7. コレクションモジュール

Python 辞書の順序のキー値の変更

特定のキーの値が変更された場合、OrderedDict 内でのキーの位置は変更されません。この Python メソッドは、OrderedDict のキーに関連付けられた値を変更する方法を示しています。

例 : この例では、以下の Python コードで OrderedDict を使用して、特定のキーに関連付けられた値の変更を示します。最初に、キー「a」から「d」とそれぞれの値 1 から 4 を持つ OrderedDict を作成します。

パイソン
# A Python program to demonstrate working of key # value change in OrderedDict from collections import OrderedDict print('Before:
') od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key, value) print('
After:
') od['c'] = 5 for key, value in od.items(): print(key, value)>

出力:

  Before:  a 1 b 2 c 3 d 4   After:  a 1 b 2 c 5 d 4>

Python での等価比較 辞書の順序

Python の OrderedDict は、その内容だけでなく挿入順序も考慮して同等かどうかを比較できます。これは、キーと値のペアとその順序の両方について 2 つの OrderedDict を比較する場合に便利です。

例 : この例では、コードはキーと値のペアの順序が異なる 2 つの OrderedDicts `od1` と `od2` を作成します。次に、「==」演算子を使用してそれらが等しいかどうかを比較するときに挿入順序が考慮され、結果が「False」になることを示します。

パイソン
from collections import OrderedDict # Create two ordered dictionaries with different orderings od1 = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) od2 = OrderedDict([('c', 3), ('b', 2), ('a', 1)]) # Compare the ordered dictionaries for equality print(od1 == od2)>

出力:

False>

OrderedDict の反転 Python 辞書の順序で

OrderedDict を作成した後、reverse>キーと値のペアの順序を逆にするメソッドが適用されます。後続のループでは項目が逆の順序で出力され、逆操作を容易にする OrderedDict の機能が強調されます。 OrderedDicts は、reverse>方法。これにより、辞書内のキーと値のペアの順序が逆になります。

例 : この例では、以下のコードは OrderedDict を使用し、「reverse」メソッドを使用してそのキーと値のペアを反転します。後続のループでは項目が逆の順序で出力され、出力は `c 3, b 2, a 1` になります。

パイソン
from collections import OrderedDict my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) my_dict.reverse() for key, value in my_dict.items(): print(key, value)>

出力:

Javaでの例外処理
 c 3, b 2, a 1>

OrderedDict Popitem() と Python 辞書の順序

popitem()>方法 OrderedDict では、last>パラメータを使用して、最後に挿入されたキーと値のペアを削除して返します。これは、後入れ先出し方式で項目を処理する場合に便利です。 OrderedDict で `popitem(last=True)` を使用すると、最後に追加された項目が削除されて返されるため、要素の順序を柔軟に管理できます。

例 : この例では、以下のコードは OrderedDict を使用し、`last=True` を指定した `popitem` メソッドを適用して、最後に挿入されたキーと値のペアを削除して保存します。次に、削除された項目を出力し、出力は `('c', 3)` になります。

パイソン
from collections import OrderedDict my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) last_item = my_dict.popitem(last=True) print(last_item)>

出力:

('c', 3)>

任意の位置にキーを挿入 Python 辞書の注文

OrderedDict を使用すると、特定の位置に新しいキーを挿入できます。move_to_end>そしてmove_to_start>メソッド。この柔軟性により、使用法や優先順位に基づいてキーを動的に並べ替えることができます。

例 : この例では、以下の Python コードは OrderedDict を使用して、順序付けされたキーと値のペアを持つ辞書を作成します。次に、「move_to_end」メソッドを使用して、キー「a」を最後に、キー「b」を先頭に再配置します。

パイソン
from collections import OrderedDict my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) # Move key 'a' to the end my_dict.move_to_end('a') # Move key 'b' to the beginning my_dict.move_to_end('b', last=False) for key, value in my_dict.items(): print(key, value)>

出力:

b 2, c 3, a 1>

削除と再挿入 Python 辞書の注文

同じキーを削除して再挿入すると、OrderedDict が挿入順序を維持するため、そのキーは後ろに押し込まれます。このメソッドは、Python OrderedDict での削除と再挿入の操作を示します。最初に、キーと値のペアを OrderedDict に設定し、エントリを削除し、更新された OrderedDict を出力し、その後、削除されたエントリを再挿入して、辞書の順序付けされた性質を示します。

例 : この例では、以下の Python コードは、OrderedDict 内の項目の削除、再挿入、および印刷を示しています。最初に OrderedDict 項目を出力し、次にキー「c」を持つエントリを削除し、更新された OrderedDict を出力し、最後に「c」とその値を再挿入して、OrderedDict を再度出力します。

パイソン
# A Python program to demonstrate working of deletion # re-insertion in OrderedDict from collections import OrderedDict print('Before deleting:
') od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key, value) print('
After deleting:
') od.pop('c') for key, value in od.items(): print(key, value) print('
After re-inserting:
') od['c'] = 3 for key, value in od.items(): print(key, value)>

出力:

世界で最も美しい笑顔
  Before deleting:  a 1 b 2 c 3 d 4   After deleting:  a 1 b 2 d 4   After re-inserting:  a 1 b 2 d 4 c 3>

Pythonのコレクションモジュール 辞書の順序

OrderedDict は、 コレクションモジュール Pythonで。これは、通常の辞書のすべてのメソッドと機能に加えて、項目の順序を利用するいくつかの追加メソッドを提供します。 Python で OrderedDict を使用する例をいくつか示します。

例 : この例では、以下のコードは OrderedDict を使用して、順序付けされたキーと値のペアを持つ辞書を作成します。新しい項目「d」を末尾に追加し、項目「e」と「f」を先頭に挿入し、「e」を先頭に移動します。最後のループでは、辞書項目が追加された順序で出力されます。

パイソン
from collections import OrderedDict # Create an ordered dictionary of key-value pairs my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) # Add a new item to the end of the dictionary my_dict['d'] = 4 # Add a new item at a specific position in the dictionary # my_dict.update({'e': 5, 'f': 6}) or below my_dict.update([('e', 5), ('f', 6)]) my_dict.move_to_end('e', last=False) # Iterate over the dictionary in the order in which items were added for key, value in my_dict.items(): print(key, value)>

出力:

e 5 a 1 b 2 c 3 d 4 f 6>

時間計算量:

  • アイテム(キー)を取得: ○(1)
  • 設定項目(キー、値): ○(1)
  • アイテム(キー)を削除: の上)
  • 反復: の上)

空間の複雑さ: の上)

OrderedDict は、項目が追加された順序を記憶する Python の辞書サブクラスです。通常の Python 辞書では、項目の順序は保証されておらず、プログラムの異なる実行間または Python の異なるバージョン間で変わる可能性があります。ただし、OrderedDict は、後で新しい項目が追加されたり、既存の項目が変更された場合でも、追加されたときの項目の順序を保持します。

その他の考慮事項

  • Python バージョン 2.7 の順序付き辞書は、通常の辞書よりも多くのメモリを消費します。これは、順序を維持するための基礎となる二重リンク リストの実装によるものです。 Python 2.7 では、Ordered Dict は dict サブクラスではなく、コレクション モジュールの特殊なコンテナーです。
  • Python 3.7 以降、Python 辞書の挿入順序が保証されます。
  • Ordered Dict は、次の助けを借りてスタックとして使用できます。 私は飲む 関数。 Ordered Dict を使用して LRU キャッシュを実装してみてください。