[Python] 辞書内包表記(dictionary comprehension)について 1

Facebook にシェア
Pocket
LINEで送る
このエントリーを Google ブックマーク に追加

リスト内包表記のように。

[amazonjs asin=”B009Z30HPG” locale=”JP” title=”Dive Into Python 3 日本語版”]

辞書型でもリスト内包表記のように記述できる。

辞書型を定義すると、

[shell] In [1]: dic = {"data0": 0, "data1": 1, "data2": 2, "data3": 3, "data4": 4, "data5": 5, "data6": 6, "data7": 7, "data8": 8, "data9": 9}

In [2]: dic
Out[2]:
{‘data0’: 0,
‘data1’: 1,
‘data2’: 2,
‘data3’: 3,
‘data4’: 4,
‘data5’: 5,
‘data6’: 6,
‘data7’: 7,
‘data8’: 8,
‘data9’: 9}
[/shell]

のようにするとやっぱりスマートじゃない。リスト内包表記の時のようにfor文で書くと

[shell title=”for文”] In [1]: dic = {}

In [2]: for x in range(0, 10):
…: dic["data" + str(x)] = x
…:

In [3]: dic
Out[3]:
{‘data0’: 0,
‘data1’: 1,
‘data2’: 2,
‘data3’: 3,
‘data4’: 4,
‘data5’: 5,
‘data6’: 6,
‘data7’: 7,
‘data8’: 8,
‘data9’: 9}
[/shell]

とやっぱりスマートじゃない。というわけで、リスト内包表記と使い方はほぼ変わらないのだけど

[shell title=”辞書内包表記”] In [1]: dic = {"data" + str(x): x for x in range(0, 10)}

In [2]: dic
Out[2]:
{‘data0’: 0,
‘data1’: 1,
‘data2’: 2,
‘data3’: 3,
‘data4’: 4,
‘data5’: 5,
‘data6’: 6,
‘data7’: 7,
‘data8’: 8,
‘data9’: 9}
[/shell]

と一行で書ける。

Related posts

コメントを残す