Pythonの辞書型(Dictionary)は非常に便利なデータ構造で、キーと値のペアを保存することができます。しかし、Python 3.5までは、辞書型は順序を保持しないという特性がありました。
辞書型とは
辞書型は、「カギカッコ {}」の中にkeyとvalueからなるデータが含まれるオブジェクトのことを指します。以下のようにkeyとvalueを記述します。
dict = {
"key1": "value1",
"key2": "value2",
"key3": "value3",
}
このように、辞書型のオブジェクトは要素にkeyと紐づくvalueをコロンで区切ったペアとなります。それぞれのペアはカンマで区切ります。
順序保持の辞書型:OrderedDict
Pythonには、順序付き辞書であるOrderedDictというデータ型も存在します。OrderedDictは通常のDictionaryと構造は似ていますが、違いとして設定された要素の順番を保持されます。
from collections import OrderedDict
dict = OrderedDict()
dict['key1'] = 'value1'
dict['key2'] = 'value2'
dict['key3'] = 'value3'
for key, val in dict.items():
print(key, val)
このコードを実行すると、追加した要素の順番が保持されることがわかります。
Python 3.7以降の辞書型の変化
Python 3.7から(非公式には3.6から)、dictがキーの順序を保証するようになりました。これにより、OrderedDictを使用する必要がなくなり、よりシンプルなコードで順序を保持した辞書を作成することが可能になりました。
dict = {
"key1": "value1",
"key2": "value2",
"key3": "value3",
}
for key, val in dict.items():
print(key, val)
このコードも、追加した要素の順番が保持されます。
まとめ
Pythonの辞書型は非常に便利なデータ構造で、さらにPython 3.7以降では順序も保持するようになりました。これにより、よりシンプルで直感的なコードを書くことが可能になりました。順序を保持することが重要な場合には、この特性を活用しましょう。