首次提交
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user