dict_data.get(key, default) 只防“没键”, 如果dict_data={key:None} 是得不到 default的
(dict_data.get(key) or default) 既防“没键”,又防“值为 None/空”。
但对于 处理数值类(Int, Float, Bool) 要考虑 可能会对0 和 False 误杀,当然,如果deafult也是0 则无所谓。
对于处理 容器类(List, Dict, String) 很稳,无key、空值、None值 都能得到 default
例如:
order_list = (x.get("data") or {}).get("orders") or []
比起 order_list = x.get("data").get("orders",[]) if x.get("data") else [] 更健壮
x = {"data": {"orders": None}} 时,第一条式子得到 [] ,第二条式子得到 None
None 不能被遍历, [] 可以被遍历
item_list = data.get("key1",{}).get("orders",[]) # 若要进行 for item in item_list: 循环,更健壮的写法可以是: item_list = (data.get("key1") or {}).get("orders") or []