Python 順序付き辞書

高洛峰
リリース: 2016-11-22 09:19:10
オリジナル
1625 人が閲覧しました

順序付き辞書 - OrderedDict の紹介

順序付き辞書は通常の辞書と似ていますが、通常の辞書は任意の順序で反復処理するのに対し、要素が挿入される順序を記録できる点が異なります。以下の例を参照してください:

import collections

print 'Regular dictionary:'
d = {}
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
d['d'] = 'D'
d['e'] = 'E'

for k, v in d.items():
    print k, v

print '\nOrderedDict:'
d = collections.OrderedDict()
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
d['d'] = 'D'
d['e'] = 'E'

for k, v in d.items():
    print k, v
ログイン後にコピー

実行結果は次のとおりです:

-> python test7.py
Regular dictionary:
a A
c C
b B
e E
d D

OrderedDict:
a A
b B
c C
d D
e E
ログイン後にコピー

通常、辞書は挿入順に走査されていないことがわかります。

等価性

2つの順序付けされたフィールドが等しい(==)かどうかを判断するには、要素の挿入順序が等しいかどうかを考慮する必要があります

import collections

print 'dict       :',
d1 = {}
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d1['d'] = 'D'
d1['e'] = 'E'

d2 = {}
d2['e'] = 'E'
d2['d'] = 'D'
d2['c'] = 'C'
d2['b'] = 'B'
d2['a'] = 'A'

print d1 == d2

print 'OrderedDict:',

d1 = collections.OrderedDict()
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d1['d'] = 'D'
d1['e'] = 'E'

d2 = collections.OrderedDict()
d2['e'] = 'E'
d2['d'] = 'D'
d2['c'] = 'C'
d2['b'] = 'B'
d2['a'] = 'A'

print d1 == d2
ログイン後にコピー

実行結果は次のとおりです:

-> python test7.py
dict       : True
OrderedDict: False
ログイン後にコピー

そして、順序付けされた辞書かどうかを判断するとき他の通常の辞書と同等ですが、内容が同等であるかどうかを判断するだけで済みます。

OrderedDict のコンストラクターまたは update() メソッドはキーワード パラメーターを受け入れますが、Python 関数呼び出しでは順序なし辞書を使用してパラメーターを渡すため、キーワード パラメーターの順序が失われるため、作成された順序付き辞書はその順序を保証しません。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート