遍历MySQL生成的嵌套列表提取城市月度数据用于matplotlib堆叠柱状图
解决方法
你可以基于现有已生成的all_list结构,按如下逻辑实现遍历:
- 先建立城市名和对应存储列表的映射,避免重复编码
- 遍历每个月的数据,将当月的「城市-数值」对转换为字典方便快速查询
- 逐个城市查询当月是否有对应数据,无数据则补0
具体实现代码如下:
# 城市名和对应存储列表的映射,注意和源数据里的城市名称(含空格)保持一致 city_map = { 'Alexandria ': alex, 'Cairo': cairo, 'Giza': giza, 'Delta ': delta, 'Upper Egypt': upper_egypt } # 遍历12个月份的数据 for month_item in all_list: # 生成当月城市和对应数值的字典 month_city_data = {} # 跳过第0位的月份名,按步长2遍历取城市和对应数值 for i in range(1, len(month_item), 2): city = month_item[i] count = month_item[i+1] month_city_data[city] = count # 给每个城市的列表追加当月数据,无数据补0 for city_name, city_list in city_map.items(): city_list.append(month_city_data.get(city_name, 0))
执行完成后,你要的cairo列表就会是[2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],其余城市的列表也会自动生成符合要求的12位数据。
内容的提问来源于stack exchange,提问作者Guirguis.Botros
相关产品推荐
相关产品推荐

