_pairs = {}
if not mode and prefix:
_pairs[prefix] = item
if not item and prefix:
_pairs[prefix] = item
if isinstance(item, dict): # A.B
for _key, _val in item.items():
_key = "{}.{}".format(prefix, _key) if prefix else _key
if not mode:
_pairs[_key] = _val
_pairs.update(get_all_kv_pairs(item=_val, prefix=_key, mode=mode))
elif isinstance(item, (list, set, tuple)): # A[0]
for i, _key in enumerate(item):
_key = "{}[{}]".format(prefix, i) if prefix else "[{}]".format(i)
if not mode:
_pairs[_key] = item[i]
_pairs.update(get_all_kv_pairs(item=item[i], prefix=_key, mode=mode))
else: # the end level
if prefix:
_pairs[prefix] = item
else:
_pairs[item] = ''
return _pairs
将多层嵌套的数据结构展平为一个字典
最新推荐文章于 2024-10-07 20:56:37 发布