keys() が同じ順序のままであると期待できますか?
それらをドロップダウンボックスに使用する予定で、辞書にアイテムを追加または削除してもシフトしたくありません。
いいえ。ドキュメントによると:
キーと値は任意の順序でリストされます。これはランダムではなく、Python の実装によって異なり、辞書の挿入と削除の履歴に依存します。
のキーの順序はdict
保証されません。
ディクショナリは、順序付けされていないキーのセットと考えるのが最善です。値のペア。キーは(1つのディクショナリ内で)一意である必要があります。
ディクショナリオブジェクトの
keys()
メソッドは、ディクショナリで使用されているすべてのキーのリストを任意の順序で返します(ソートする場合は、sorted()
関数を適用するだけです)。
Python 2.7以降および3.1以降には、PEP 372で説明されているOrderedDict
クラスがcollections
あり、これはまさにあなたが望むことを実行します。キーが追加された順序を記憶しています。
>>> from collections import OrderedDict
>>> od = OrderedDict()
>>> od[1] = "one"
>>> od[2] = "two"
>>> od[3] = "three"
>>> od.keys()
[1, 2, 3]
いいえ、ある日から次の日までではありません。keys()は任意の順序になります(インスタンスの存続期間中は一貫していると思いますが、メニューでは機能しません)。
Python3は辞書を注文しました:collections.OrderedDictドキュメント
Pythonドキュメントから:
ディクショナリオブジェクトのkeys()メソッドは、ディクショナリで使用されているすべてのキーのリストを任意の順序で返します(ソートする場合は、sorted()関数を適用するだけです)。
したがって、この問題を解決する方法は、キーを「リスト」するとすぐにソートすることです。
辞書やオブジェクトの配列のようなものを試してみることをお勧めします。配列は順序付けられています。メニュー項目のテキストは、配列またはオブジェクトの一部のフィールドにあります。