🖥

#python の ネストされた辞書で KeyError を起こさないように defaultdict を利用する例 ( #ruby 比較 )

2019/04/15に公開

example

  • defaultdict を何層にもネストして使ってみる
  • d["x"]["y"]["z"] のように存在しないキーを書いても怒られない
  • もしかしたら良い子は真似しちゃダメかもしれない
>>> from collections import defaultdict
>>> d = defaultdict(lambda: defaultdict(lambda: defaultdict(lambda: 0)))
>>> d["a"]["b"]["c"] = 1
>>> d["a"]["b"]["c"]
1
>>> d["x"]["y"]["z"]
0

ruby で書くなら

こんな感じだったかな。こちらも良い子はマネし‥。

[27] pry(main)> h = Hash.new(Hash.new(Hash.new(0)))
=> {}
[28] pry(main)> h["a"]["b"]["c"] = 1
=> 1
[29] pry(main)> h["a"]["b"]["c"]
=> 1
[30] pry(main)> h["x"]["y"]["z"]
=> 0

ref

Python defaultdict の使い方 - Qiita

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/1284

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2019-04-15

Discussion