Merge commit '47296980495f8bbfc9493e93de85dd62de6fa6b9' as 'paste-framework'

This commit is contained in:
zwf
2026-06-02 19:09:22 +08:00
107 changed files with 21484 additions and 0 deletions
+40
View File
@@ -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)