Database JUNKY

MySQL,MariaDBを中心としたブログです

python3 ディクショナリ型の要素アクセスで、階層がある要素のkeyerrorを回避する方法

例えば、下記のようなネスト(階層)があるディクショナリ型の一部要素を参照しようとしていたのですが

(略)
    "datePublished": "2018-10-11",
    "byArtist": {
        "@type": "MusicGroup",
        "url": "https://yyyyy.zzzzzz/us/artist/abcdefg-gambino/466842536",
        "name": "Childish Gambino"
    }
}

このnameの要素にアクセスする場合、

_Artist = data['byArtist']['name']

と書いていたのですが、ものによって、このname自体がそもそもないものもありまして、KeyErrorが発生し、処理が途中でこけてしまうことがあったのですが、get関数であれば回避できますよ!って、こちらを参考にさせていただき(リンク失礼します)

tomoprog.hatenablog.com

ふむ、なるほどなるほどと思いつつ、あれ?階層(ネスト)がある場合、getでどう表現すればいいんだっけ?というのがわからず、それを回避した(厳密に言うと、詳しい人に聞いた)方法をメモします

前置き長くてすみません

ちなみに間違っていたパターン

_Artist = data.get('byArtist.name','---')

とか書いてみたのですが、今度は何も値を取得しなくなってしまい。

えー?でもgetで実現したいんだって思ったら、下記のように書くのが正解でした汗

_Artist = data.get('byArtist','---').get('name','---')

ほんと話はこれだけです。でも、目から鱗です

f:id:hit10231023:20180302202040p:plain