1. ホーム
  2. python

[解決済み] 辞書に索引をつけるには?

2022-03-03 12:58:16

質問

以下のような辞書があります。

colors = {
    "blue" : "5",
    "red" : "6",
    "yellow" : "8",
}

辞書の最初の項目をインデックス化するには?

colors[0] が返されます。 KeyError というのは、明らかな理由です。

解決方法は?

Python 3.6 までのバージョンでは、辞書は順序付けされていません。 エントリの順序を気にせず、とにかくインデックスでキーや値にアクセスしたい場合は、辞書のキーのリストを作成することができます d を使って keys = list(d) そして、リストのキーにインデックスでアクセスします。 keys[i] で、関連する値は d[keys[i]] .

エントリの順番を気にする場合は、Python 2.7以降では以下のように記述します。 collections.OrderedDict . またはペアのリストを使用する

l = [("blue", "5"), ("red", "6"), ("yellow", "8")]

キーでアクセスする必要がない場合。 (ところで、なぜ数字が文字列なのでしょうか?)

Python 3.7では、通常の辞書は順序付けされているので、辞書を作成する際に OrderedDict しかし、まだできます - 基本的に同じ型です)。 Python 3.6 の CPython 実装はすでにこの変更を含んでいましたが、言語仕様の一部ではないので、Python 3.6 では信頼することができません。