创建一个文件名为“example2.xlsx”的excel文档,并造一些数据放进Sheet1中,用于测试。
二、程序代码 1.example2.py - 统计人口数据(example2.xlsx)# 人口统计 把相同的地区人数累加 import openpyxl, pprint # 数据结构用字典类型存数据(AL-state州;Autauga-county县;tract-地区的和;pop-人数的和) # 字典里面套字典,州的字典里有’AL','AK'...;键值是一个county字典 # 'AL‘里面有county字典:’Autauga‘,'Bibb','Barbour',其中键值是tract和pop ''' {'AL': {'Autauga':{'tract':5,'pop':1912} 'Bibb':{'tract':3,'pop':432} 'Barbour':{'tract':2,'pop':1912} } ‘AK':{ } } countryData['AL']['Autauga']['tract'] ''' # 打开excel,并读取数据 print('opening workbook') wb = openpyxl.load_workbook('example2.xlsx') sheet = wb.active countryData = {} # fill in countryData with each city's pop and tract's pop for row in range(2, sheet.max_row, 1): # 获取每行的state county pop数据 state = sheet['B' + str(row)].value county = sheet['C' + str(row)].value pop = sheet['D' + str(row)].value # 确保state的键值存在(字典的setdefault函数-> 如果没有state这个值,就会加一个空的进去;如果已经存在,则会忽略) # 所以当州同样是'AL'时,只会执行一次(第一次);直到读取到'AK’时,会再执行一次; countryData.setdefault(state, {}) # 确保state里的county键值存在(与上面同理,当county同样为'Autauga'/'Bibb'时,只会执行一次) countryData[state].setdefault(county, {'tract': 0, 'pop': 0}) # 把当前州-县的 tract累加1,pop人口相加 countryData[state][county]['tract'] += 1 countryData[state][county]['pop'] += int(pop) # 把统计的数据写到 text文本,(.py文件可以再重复利用) print('Writing results...') resultFile = open('textResult1.py', 'w') resultFile.write('allData = ' + pprint.pformat(countryData)) # 把字典变量转换成字符串写进文件里2.example2-1.py - 再次利用上述的统计结果(textResult1.py)
# 引用example2.py的统计结果存放的文件; import textResult1 print(textResult1.allData['AK']['Hidd']['pop'])三、结果 1.example2.py的运行结果
生成一个textResult1.py文件
2. example2-1.py的运行结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)