python3で多重レベルの辞書の値を出力したい場合、get()で存在確認する(No.1)、inで存在確認(No.2)するとネストが深くなってしまうのですが、より簡潔に書くにはどうしたらよいでしょうか?また、No.1、No.2の使い分けはどうしたらいいでしょうか?

cats = [
    "Henri",
    "Grumpy",
    "Lucy",
]
animals = {
    "cats": cats,
    "octopi": {},
    "emus": {},
}
life = {
    "animals": animals,
    "plants": {},
    "other": {},
}

# No.1
if life.get("animals") != None:
    if life.get("animals").get("cats") != None:
        print(life.get("animals").get("cats"))

# No.2
if "animals" in life:
    if "cats" in life["animals"]:
        print(life["animals"]["cats"])