分享一个案例,sql 数据按照指定格式分类合并求出指定字段内容

需求:分享一个案例,sql 数据按照指定格式分类合并求出指定字段内容

分享一个案例,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})

分享一个案例,sql 数据按照指定格式分类合并求出指定字段内容