1. ホーム
  2. パイソン

[解決済み】Python辞書の理解力

2022-03-23 18:37:11

質問

Pythonで辞書の内包(キー)を作ることはできますか?

リスト内包がなければ、このようなものを使うことができます。

l = []
for n in range(1, 11):
    l.append(n)

これをリスト内包に短縮することができる。 l = [n for n in range(1, 11)] .

しかし、辞書のキーに同じ値を設定したいとします。 できるのは

d = {}
for n in range(1, 11):
     d[n] = True # same value for each

試してみました。

d = {}
d[i for i in range(1, 11)] = True

しかし、私は SyntaxError の上に for .

さらに(この部分は必要ないのですが、ちょっと気になったので)、次のように、辞書のキーをたくさんの異なる値に設定することができます。

d = {}
for n in range(1, 11):
    d[n] = n

これは辞書の内包で可能なのでしょうか?

d = {}
d[i for i in range(1, 11)] = [x for x in range(1, 11)]

また、これは SyntaxError を使用します。 for .

解決方法は?

があります。 Python 2.7+ の辞書内包機能 しかし、あなたが考えているようにはいきません。 リスト内包のように、これらは 新しい 既存の辞書にキーを追加することはできません。 また、キーと値を指定しなければならない。もちろん、ダミーの値を指定することも可能であるが。

>>> d = {n: n**2 for n in range(5)}
>>> print d
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

すべてTrueにしたい場合。

>>> d = {n: True for n in range(5)}
>>> print d
{0: True, 1: True, 2: True, 3: True, 4: True}

あなたが求めているのは、既存の辞書に複数のキーを一度に設定する方法だと思われます。 そのための直接的なショートカットはありません。 すでに示したようにループさせることもできますし、辞書内包を使って新しい値で新しいdictを作成し、それから oldDict.update(newDict) を使用して、新しい値を古いdictにマージします。