4

keys() が同じ順序のままであると期待できますか?

それらをドロップダウンボックスに使用する予定で、辞書にアイテムを追加または削除してもシフトしたくありません。

4

6 に答える 6

5

いいえ。ドキュメントによると:

キーと値は任意の順序でリストされます。これはランダムではなく、Python の実装によって異なり、辞書の挿入と削除の履歴に依存します。

于 2012-06-23T06:10:15.657 に答える
3

のキーの順序は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]
于 2012-06-23T06:55:37.417 に答える
1

いいえ、ある日から次の日までではありません。keys()は任意の順序になります(インスタンスの存続期間中は一貫していると思いますが、メニューでは機能しません)。

Python3は辞書を注文しました:collections.OrderedDictドキュメント

于 2012-06-23T06:11:55.883 に答える
1

Pythonドキュメントから:

ディクショナリオブジェクトのkeys()メソッドは、ディクショナリで使用されているすべてのキーのリストを任意の順序で返します(ソートする場合は、sorted()関数を適用するだけです)。

したがって、この問題を解決する方法は、キーを「リスト」するとすぐにソートすることです。

于 2012-06-23T06:17:03.840 に答える
1

いいえ。少なくとも cpython (そしておそらく他のすべての実装) では、絶対にできません。注文の保証が必要な場合は、注文を保証する をチェックしてくださいodict

于 2012-06-23T06:10:37.863 に答える
0

辞書やオブジェクトの配列のようなものを試してみることをお勧めします。配列は順序付けられています。メニュー項目のテキストは、配列またはオブジェクトの一部のフィールドにあります。

于 2012-06-23T06:12:13.573 に答える