def recur_data(self, data: dict, result=""):
"""多维/嵌套字典数据无限遍历,获取所有key层和value"""
# 使用isinstance检测数据类型:字典类型
if isinstance(data, dict):
for k, v in data.items():
if result == "":
self.recur_data(v, k)
else:
self.recur_data(v, result+"_%s" % str(k))
# 列表或元组类型
elif isinstance(data, (list, tuple)):
if len(data) == 1:
for i in range(len(data)):
# 自我调用实现无限遍历,单个不加修饰
self.recur_data(data[i], result)
else:
for i in range(len(data)):
# 自我调用实现无限遍历,多个增加字母修饰
self.recur_data(data[i], result+"_%s" % public_tools.forward("a", i))
else:
# print(result + "=" + str(data))
self.datas[result] = str(data)
运行:
if __name__ == "__main__":
dic = {"name": "zhangsan", "address": {"sheng": "beijing", "shiji": "beijing", "shiqu": ["shijingshan", "p"], "qu": {"1dong": "1", "2dong": "2"}}}
t = recurPostDict({}) # 传入空字典{},即datas初始值为{}
t.recur_data(dic, result="") # 执行过程
print(t.datas)
print(t.datas.keys())
print(t.datas.values())
执行结果
def params_to_line(content: str):
col_name = []
col_value = []
for key, value in up_colname.items():
if type(value) == list:
if len(value) == 0:
elif len(value) == 1:
for sub_key, sub_value in value[0].items():
sub_key = key + "_" + sub_key
col_name.append(sub_key)
col_value.append(sub_value)
else:
for i in range(len(value)):
for sub_key, sub_value in value[i].items():
sub_key = key + "_" + sub_key + "_" + public_tools.forward("a", 5)
col_name.append(sub_key)
col_value.append(sub_value)
else:
logs.warning(f"解析参数时, 出现字符串、字典、列表以外的{type(value)}类型,无法将{key}对应的字段落库 ~")
array mongodb 聚合 spring data mongodb 聚合查询
Aggregate简介db.collection.aggregate() 是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组、过滤等功能,然后经过一系列的处理,输出相应的结果。
db.collection.aggregate() 可以多个管道,能方便的进行数据的处理。
db.collection.aggregate() 使用了MongoDB内