更新: Python 3.7以降、挿入順序は維持されるため、OrderedDict
ここは必要ありません。通常の方法で以下のアプローチを使用できますdict
バージョン3.7で変更:辞書順は挿入順であることが保証されています。この動作は、3.6からのCPythonの実装の詳細でした。
ソース
Python 3.6およびそれ以前*
通常のについて話している場合dict
、「最初のキー」は何も意味しません。キーは、信頼できる順序で並べられていません。あなたがあなたの上で反復するならば、あなたはdict
あなたが"banana"
最初に見るものとしておそらく得られないでしょう。
物事を整理する必要がある場合OrderedDict
は、単なる辞書ではなくを使用する必要があります。
import collections
prices = collections.OrderedDict([
("banana", 4),
("apple", 2),
("orange", 1.5),
("pear", 3),
])
その後、すべてのキーを順番に表示したい場合は、それを反復することで確認できます
for k in prices:
print(k)
または、すべてのキーをリストに入れてから、それを操作することもできます
ks = list(prices)
print(ks[0]) # will print "banana"
リストを作成せずに最初の要素を取得するより速い方法next
は、イテレータを呼び出すことです。nth
要素を取得しようとすると、これはうまく一般化されません
>>> next(iter(prices))
'banana'
* CPythonは、3.6の実装の詳細として挿入順序を保証していました。