LoginSignup
0
2

辞書を作成する様々な方法(備忘録)

Last updated at Posted at 2020-11-08

はじめに

今回は一見簡単そうに見えて実は奥が深い、
辞書を作成する方法について記す。

本記事では以下の順に沿って記していく。
・波括弧で作成する方法
・dict()で作成する方法
・辞書内包表記で作成する方法

波括弧で作成する方法

  • {key: value, key: value, ...}で生成する方法。
d = {'k1': 1, 'k2': 2, 'k3': 3}
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}`
  • 以下の2の方法はPython3.5からできるようになり、二つだけでなく三つ以上もできるらしい。また
d = {**d1, **d2, 'k5': 5}

として、結合と追加を掃除に行うこともできるらしい。
これを行なってもd1,d2はそのままらしい。

d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d = {**d1, **d2}
print(d)  # {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4}
print(d1) # {'k1': 1, 'k2': 2}
print(d2) # {'k3': 3, 'k4': 4}

dict()で辞書を生成する方法

dict(key= value)とすることで辞書生成がされるらしい。
以下に例を示す。

d = dict(k1=1, k2=2, k3=3)
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}

keyとvalueの組み合わせ(タプル(key, value)など)のリストから生成する方法。

d = dict([('k1', 1), ('k2', 2), ('k3', 4)])
print(d)
# {'k1': 1, 'k2': 2, 'k3': 4}

また以下のようにイテラブルであればリストのタプルや集合(set型)のリストなどの組み合わせでも問題ない。

・リストのタプル

d = dict((['k1', 1], ['k2', 2], ['k3', 4]))
print(d)
# {'k1': 1, 'k2': 2, 'k3': 4}

・集合(set型)のリスト

d = dict([{'k1', 1}, {'k2', 2}, {'k3', 4}])
print(d)
# {1: 'k1', 2: 'k2', 'k3': 4}
  • zip関数から辞書を生成
keys = ['k1', 'k2', 'k3']
values = [1, 2, 3]
d = dict(zip(keys, values))
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}

zip()関数を使うとキーのリストと値のリストから辞書を作成できる。リストに限らず、タプルなどでもOK。

辞書内包表記から作成する方法

  • {key: value for 任意の変数名 in イテラブルオブジェクト}
l = ['Alice', 'Bob', 'Charlie']
d = {s: len(s) for s in l}
print(d)
# {'Alice': 5, 'Bob': 3, 'Charlie': 7}

リスト内包表記との違いは、[ ]でなく{}で囲むこと、および、キーと値の2つを指定すること。

  • キーと値それぞれのリストから作成する場合はコンストラクタdict()と同様にzip()関数を使う。
keys = ['k1', 'k2', 'k3']
values = [1, 2, 3]
d = {k: v for k, v in zip(keys, values)}
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}

まとめ

辞書を作成する方法がこんなにも沢山あるなんて、初めて知りました。なかなか面白い。
では、また次回。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2