35

Python の順序付き辞書の項目の位置を知ることができますか?

例えば:

私が辞書を持っている場合:

// Ordered_dict is OrderedDictionary

Ordered_dict = {"fruit": "banana", "drinks": "water", "animal": "cat"}

catでは、どのポジションに属しているかをどのように知ることができますか? 次のような答えを得ることができますか?

position (Ordered_dict["animal"]) = 2 ?または他の方法で?

4

3 に答える 3

65

keys次のプロパティでキーのリストを取得できます。

In [20]: d=OrderedDict((("fruit", "banana"), ("drinks", 'water'), ("animal", "cat")))

In [21]: d.keys().index('animal')
Out[21]: 2

を使用すると、パフォーマンスが向上する可能性がありiterkeys()ます。

Python 3 を使用している場合:

>>> list(d.keys()).index('animal')
2
于 2011-08-01T11:34:10.387 に答える
6

Python3 の場合:tuple(d).index('animal')

これは上記のマレインの回答とほぼ同じですが、可変リストの代わりに不変タプルを使用しています。そのため、実行速度が少し速くなるはずです (私の簡単なサニティ チェックでは最大 12% 高速です)。

于 2017-06-01T11:49:53.720 に答える
3

まず、ドキュメントを読む必要があると考えてください。Python チュートリアルを開いて OrderedDict に関する情報を検索しようとすると、次のように表示されます。

class collections.OrderedDict([items]) - 通常の dict メソッドをサポートする dict サブクラスのインスタンスを返します。OrderedDict は、キーが最初に挿入された順序を記憶する辞書です。新しいエントリが既存のエントリを上書きする場合、元の挿入位置は変更されません。エントリを削除して再挿入すると、最後に移動します。

バージョン 2.7 の新機能。

したがって、順序付けられた辞書を使用していて、キーを削除しない場合、「動物」は常に追加した位置にあります-たとえば、インデックス 2.

また、「猫」のインデックスを取得するには、次のように簡単に使用できます。

from collections import OrderedDict
d = OrderedDict((("fruit", "banana"), ("drinks", "water"), ("animal", "cat")))
d.keys()
>>> ['fruit', 'drinks', 'animal']
d.values()
>>> ['banana', 'water', 'cat']
# So
d.values().index('cat')
>>> 2
于 2011-08-01T11:52:20.360 に答える