分享一个案例,sql 数据按照指定格式分类合并求出指定字段内容
需求:
我这里用了 先转列表,然后转字典,值的列表合并取出,最后再把自动数据转为列表。写的很麻烦,有道友有好的方法可以借鉴一下 ~~~
def rw1():
[data_list.append(row) for row in db.session.execute(sql)]
print('原始数据:',data_list)
hd = ['山东','江苏','安徽','浙江','江西','福建','上海'] # 华东地区
hn = ['广东','广西','海南'] # 华南地区
hz = ['湖北','湖南','河南'] # 华中地区
hb = ['北京','天津','河北','山西','内蒙古'] # 华北地区
xb = ['宁夏','新疆','青海','陕西','甘肃'] # 西北地区
xn = ['四川','云南','贵州','西藏','重庆'] # 西南地区
dongb = ['辽宁','吉林','黑龙江'] # 东北地区
twa = ['台湾','香港','澳门'] # 台港澳地区
item = {}
for row2 in data_list:
if row2[0] in hd:
area = '华东地区'
elif row2[0] in hn:
area = '华南地区'
elif row2[0] in hz:
area = '华中地区'
elif row2[0] in hb:
area = '华北地区'
elif row2[0] in xb:
area = '西北地区'
elif row2[0] in xn:
area = '西南地区'
elif row2[0] in dongb:
area = '东北地区'
elif row2[0] in twa:
area = '台港澳地区'
if area in item.keys():
print('存在')
item[area].append(row2[1])
else:
item[area] = [row2[1]]
print(item)
for con in item:
if len(item[con]) >1:
item[con] = sum(item[con])/len(item)
elif len(item[con]) ==1:
item[con] = item[con][0]
print(item)
area_list = list(item.keys())
rate_data = list(num for num in item.values())
print(area_list,rate_data)
return render_template('index.html',{area_list=area_list,rate_data=rate_data})