以下のような辞書型のオブジェクトがあるとします。
「token が存在すれば token の値を取得、なければ例外を出さずに None(undefined, nil) を取得」したいです。
json
1obj = { 2 "facebook": { 3 "token": "xxx" 4 }, 5 "twitter": { 6 } 7}
JavaScript で書くとこうなります
javascript
1const fb = obj["facebook"] && obj["facebook"]["token"]; // => 'xxx' 2const tw = obj["twitter"] && obj["twitter"]["token"]; // => undefined 3const ig = obj["instgram"] && obj["instagram"]["token"]; // => undefined
Ruby なら Safe Navigation Operator があるのでもっとラクです
ruby
1const fb = obj["facebook"]&.["token"]; # => 'xxx' 2const tw = obj["twitter"]&.["token"]; # => nil 3const ig = obj["instgram"]&.["token"]; # => nil
Python3 ではこのように書くしかないんでしょうか
非常に冗長で読みにくいです
python
1const fb = obj["facebook"]["token"] if "facebook" in obj and "token" in obj["facebook"] else None # => 'xxx' 2const tw = obj["twitter"]["token"] if "twitter" in obj and "token" in obj["twitter"] else None # => None 3const ig = obj["instagram"]["token"] if "instagram" in obj and "token" in obj["instagram"] else None # => None
煩雑なのでもっと簡易な書き方があれば教えてください

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/05 04:38 編集
2018/06/05 08:49
2018/06/05 09:09 編集