1 [要求]
把Excel表中的人口按省統計
2 [思路]
- [集合的形式 ] 适合統計 因為他 key不變 和value
- [清單形式 ]使輸出結果為清單形式 , 失敗 不能分行 , 不能統計 無意義

3 [步驟]
3.1 讀入
from openpyxl import workbook
wb = openpyxl.load_workbook("003 例子 人口統計.xlsx")
ws = wb.active
3.2 用循環周遊每行 ,分解成 國家\省份\城市\人口
for row in range(2, ws.max_row) :
# print(row, end=",") # 取行号
# 每一行 取 國家\省份
國家=ws.cell(row=row,column=1).value
省=ws.cell(row=row,column=2).value
市=ws.cell(row=row,column=3).value
人口=ws.cell(row=row,column=4).value
print(國家,省,市,人口)
#==================輸出============
中國 江西省 景德鎮市 159
中國 江西省 萍鄉市 185
中國 江西省 九江市 473
中國 江西省 新餘市 114
3.3 定義格式 – 分級組合成集合形式,到國家
接 上面代碼
# 定義格式 -- 分級組合成集合形式,到國家
人口data.setdefault(國家,{}) # 輸出 : {'中國': {}}
# 定義格式 -- 分級組合成集合形式,到省
人口data[國家].setdefault(省,{"人口數量":0,"市級機關":0}) # 指派,并為0
# 統計并求和
人口data[國家][省]["市級機關"]+=1
人口data[國家][省]["人口數量"]+=人口
4 [代碼奉上]
# --*coding:utf-8*--
"""
[要求]
中國 江西省 景德鎮市 159
中國 江西省 萍鄉市 185
中國 江西省 九江市 473
...
中國 山東省 日照市 280
中國 山東省 萊蕪市 130
[轉換為]
{'中國': {'江西省': {'人口數量': 3952, '市級機關': 10}}}
[思路]
用集合 key不變,value累加
"""
import openpyxl
from openpyxl import workbook
# 讀入
wb = openpyxl.load_workbook("003 例子 人口統計.xlsx")
ws = wb.active
人口data = {}
人口數量=0
市級機關=0
# 定義 國家\省份\城市\人口
for row in range(2, ws.max_row) :
# print(row, end=",") # 取行号
# 每一行 取 國家\省份
國家=ws.cell(row=row,column=1).value
省=ws.cell(row=row,column=2).value
市=ws.cell(row=row,column=3).value
人口=ws.cell(row=row,column=4).value
# print(國家,省,市,人口)
# 定義格式 -- 分級組合成集合形式,到國家
人口data.setdefault(國家,{}) # 輸出 : {'中國': {}}
# 定義格式 -- 分級組合成集合形式,到省
人口data[國家].setdefault(省,{"人口數量":0,"市級機關":0}) # 指派,并為0
# 統計并求和
人口data[國家][省]["市級機關"]+=1
人口data[國家][省]["人口數量"]+=人口
print(人口data)