4729698049
git-subtree-dir: paste-framework git-subtree-split: 34e8684c4bc3cebbe177509f42ab4ef5b5425a7a
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from typing import Any, Optional, Dict
|
|
|
|
|
|
def get_with_default(dict_obj: dict, key: Any, default: Optional[Any] = None):
|
|
"""
|
|
从字典中取得对应的值,若为 None,则返回默认值。
|
|
注意,字典自带 get 方法是当 key 存在,则返回对应的值,无论是否为 None;
|
|
而该方法是无论 key 是否存在,只要值为 None 均返回默认值。
|
|
|
|
:param dict_obj: 字典对象
|
|
:param key: 键
|
|
:param default: 默认值
|
|
"""
|
|
_val = dict_obj.get(key, default)
|
|
if _val is None:
|
|
_val = default
|
|
return _val
|
|
|
|
|
|
def get_by_path(dict_obj: Dict[str, Any], path: str, default: Optional[Any] = None):
|
|
"""
|
|
按路径取得字典中的数据。要求路径指向的也必须是字典,除最后一项。
|
|
|
|
:param dict_obj: 字典对象
|
|
:param path: 字典中的 key 路径,以"."号分隔
|
|
:param default: 默认值
|
|
:return:
|
|
"""
|
|
_dict: Optional[Dict[str, Any]] = dict_obj
|
|
_keys = path.split(".")
|
|
|
|
if len(_keys) > 1:
|
|
# 遍历到倒数第二项
|
|
for _key in _keys[:-1]:
|
|
_dict = _dict.get(_key, None)
|
|
if not isinstance(_dict, dict):
|
|
return default
|
|
|
|
# 返回最后一项内容
|
|
return _dict.get(_keys[-1], default) |