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

PythonのOrderedDict


OrderedDictは、Pythonのdictオブジェクトのサブクラスです。 OrderedDictとdictの唯一の違いは、OrderedDictでは、挿入されたキーの順序を維持することです。口述では、順序付けが行われる場合と行われない場合があります。

OrderedDictは、コレクションにある標準ライブラリクラスです。 モジュール。

最初に使用するには、コレクションをインポートする必要があります 標準ライブラリモジュール。

import collections

このセクションでは、OrderedDictの操作と、OrderedDictとDictの違いについて説明します。

DictとOrderedDictにいくつかのキーと値を入れることができます。この例では、Dictの順序が異なる場合があることがわかります。しかし、OrderedDictの場合。修正されます。

サンプルコード

import collections
#Create normal dict
my_dict = {}
my_dict['AA'] = 11
my_dict['BB'] = 22
my_dict['CC'] = 33
my_dict['DD'] = 44
for item in my_dict.items():
   print(item)
print()
#Create ordered dict
my_ord_dict = collections.OrderedDict()
my_ord_dict['AA'] = 11
my_ord_dict['BB'] = 22
my_ord_dict['CC'] = 33
my_ord_dict['DD'] = 44
for item in my_ord_dict.items():
   print(item)

出力

('AA', 11)
('CC', 33)
('BB', 22)
('DD', 44)

('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)

指定されたキーの値を変更する

指定されたキーの値が変更されても、OrderedDictのキーの順序は変更されません。このステートメントは、Dictタイプのオブジェクトに当てはまる場合と当てはまらない場合があることがわかります。

サンプルコード

import collections
#Create normal dict
my_dict = {}
my_dict['AA'] = 11
my_dict['BB'] = 22
my_dict['CC'] = 33
my_dict['DD'] = 44
for item in my_dict.items():
   print(item)
#Change the value for key BB
my_dict['BB'] = 100
print('After changing in Dict')
for item in my_dict.items():
   print(item)
print()
#Create ordered dict
my_ord_dict = collections.OrderedDict()
my_ord_dict['AA'] = 11
my_ord_dict['BB'] = 22
my_ord_dict['CC'] = 33
my_ord_dict['DD'] = 44
for item in my_ord_dict.items():
   print(item)
#Change the value for key BB
my_ord_dict['BB'] = 100
print('After changing in Ordered Dict')
for item in my_ord_dict.items():
   print(item)

出力

('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
After changing in Dict
('AA', 11)
('CC', 33)
('DD', 44)
('BB', 100)

('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
After changing in Ordered Dict
('AA', 11)
('BB', 100)
('CC', 33)
('DD', 44)

OrderedDictの要素の削除と再挿入

OrderedDictから1つの要素が削除され、そのキーと値に対して再挿入操作を実行すると、その要素が後ろにプッシュされます。挿入中は順序を維持していましたが、削除の場合は順序情報を削除し、再挿入の新しいエントリとして扱います。

サンプルコード

import collections
#Create ordered dict
my_ord_dict = collections.OrderedDict()
my_ord_dict['AA'] = 11
my_ord_dict['BB'] = 22
my_ord_dict['CC'] = 33
my_ord_dict['DD'] = 44
for item in my_ord_dict.items():
   print(item)
#Delete item in key BB
my_ord_dict.pop('BB')
print('After Deleting')
for item in my_ord_dict.items():
   print(item)
#re-inserting item 
my_ord_dict['BB'] = 22
print('After Re-inserting')
for item in my_ord_dict.items():
   print(item)    

出力

('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
After Deleting
('AA', 11)
('CC', 33)
('DD', 44)
After Re-inserting
('AA', 11)
('CC', 33)
('DD', 44)
('BB', 22)

  1. サイクルソート用のPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、サイクルソートの概念を使用して配列をソートする必要があります。 これはインプレースアルゴリズムであり、スワッピングはサイクルの形成によって行われます。 次に、以下の実装のソリューションを見てみましょう- 例 def cycleSort(array):    writes = 0    # cycles to be rotated    for cycleStart in range(0, len(array) - 1):

  2. Pythonのissuperset()

    この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',