Python 辞書の理解 [重複] 質問する

Python 辞書の理解 [重複] 質問する

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

ベストアンサー1

がある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}

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

おすすめ記事