常用的高阶函数有:zip、map、filter、reduce几个,按分类可为:AB组合,A作用于B两种;
本篇介绍AB组合:zip
# 源码例子
zip(*iterables, strict=False) --> Yield tuples until an input is exhausted.
>>> list(zip('abcdefg', range(3), range(4)))
>>> [('a', 0, 0), ('b', 1, 1), ('c', 2, 2)]
# 需求: 从数据库读取数据,以对象(字典)方式返回给前端
from sqlalchemy import create_engine
db_engine = create_engine(...)
obj_result = []
df = pd.read_sql_query(sql, db_engine)
print(df.keys()) # 输出A
for item in df.values:
print(item, type(item)) # 输出B
obj_item = dict(zip(df.keys(), item)) # AB组合
obj_result.append(obj_item)
print(obj_result) # 输出C
# 输出A: Index(['id', 'department', 'name', 'date', 'contact'], dtype='object')
# 输出B: [2 22 '邓爽' datetime.date(2022, 4, 25) None] <class 'numpy.ndarray'>
# 输出C以对象(字典)方式输出: [{'id': 2, 'department': 22, 'name': '邓爽', 'date': datetime.date(2022, 4, 25), 'contact': None}]