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)
新しい値を古い辞書にマージすることができます。