tapitapi’s blog

1日1杯タピオカ!エンジニア

【python】 dict型でKeyの存在チェックにgetを使う

dict型でKeyの存在チェックにinを使っていたのですが、getが便利!ってことに気づいたので紹介します

 

データA

{"修学旅行先": ”長野”, "先生": [山田,高橋], "注意事項": ”登山靴を持ってくる”}

 

データB

{"修学旅行先": ”京都”, "先生": [小山], "注意事項": ””}

 

データC

{"修学旅行先": ”北海道”, "先生": [細谷]}

 

上記のようなdict型データがあった場合、"注意事項"のKeyの値があるかどうかを調べる時、今までは下記を使っていました。

 

if  "注意事項" in data and len(data["注意事項"]) > 0:

    print(data["注意事項"])

または

if "注意事項" in data and data["注意事項"] != "":

   print(data["注意事項"])

 

でも、getを使えば、andを使わなくてOK

if data.get("注意事項"):

   print(data["注意事項"])

 

これは、データBのように、Key”注意事項”の値が空文字なら、

 data.get("注意事項")は空文字が返ってくる

データCのように、Key”注意事項”が存在しなければ、

data.get("注意事項")はNoneが返ってくる

 

PythonのIf文は空文字もNoneも、falseとして扱ってくれるので、getを使うとスッキリ書けるよ!という話でした。

 

おやすみなさい