如何使用循环命令创建多个字典变量?
这是我第一次使用Python。我想为每个县(总共有23个)创建一个字典,用年份作为键,来存储人口和收入的数值。虽然我强行写的代码能运行,但我觉得用循环或类来做会更简单……有没有什么建议呢?谢谢!!!!!
import xlrd
wb= xlrd.open_workbook('C:\Python27\Forecast_test.xls')
popdata=wb.sheet_by_name(u'Sheet1')
incomedata=wb.sheet_by_name(u'Sheet2')
WyomingCnty =('Albany', 'Big Horn',
'Campbell', 'Carbon', 'Converse',
'Crook', 'Fremont', 'Goshen',
'Hot Springs','Johnson', 'Laramie',
'Lincoln', 'Natrona','Niobrara',
'Park', 'Platte', 'Sheridan', 'Sublette',
'Sweetwater', 'Teton', 'Uinta', 'Washakie', 'Weston','Wyoming')
Years = ('y0','y1','y2','y3','y4','y5','y6','y7','y8','y9','y10',
'y11','y12', 'y13', 'y14', 'y15', 'y16', 'y17', 'y18','y19',
'y20','y21','y22','y23','y24','y25','y26','y27','y28','y29','y30')
AlbanyPop = popdata.col_values(colx=1,start_rowx=1,end_rowx=None)
AlbanyIncome= incomedata.col_values(colx=1,start_rowx=1,end_rowx=None)
AlbanyDict1=dict(zip(Years,AlbanyPop))
AlbanyDict2=dict(zip(Years,AlbanyIncome))
BigHornPop = popdata.col_values(colx=2,start_rowx=1,end_rowx=None)
BigHornIncome= incomedata.col_values(colx=2,start_rowx=1,end_rowx=None)
BigHornDict1=dict(zip(Years,BigHornPop))
BigHornDict2=dict(zip(Years,BigHornIncome))
2 个回答
1
我会直接用另一个字典。就像这样:
import xlrd
wb= xlrd.open_workbook('C:\Python27\Forecast_test.xls')
popdata=wb.sheet_by_name(u'Sheet1') #Import population data
incomedata=wb.sheet_by_name(u'Sheet2') #Import income data
WyomingCnty =('Albany', 'Big Horn',
'Campbell', 'Carbon', 'Converse',
'Crook', 'Fremont', 'Goshen',
'Hot Springs','Johnson', 'Laramie',
'Lincoln', 'Natrona','Niobrara',
'Park', 'Platte', 'Sheridan', 'Sublette',
'Sweetwater', 'Teton', 'Uinta', 'Washakie', 'Weston','Wyoming')
Years = ('y0','y1','y2','y3','y4','y5','y6','y7','y8','y9','y10',
'y11','y12', 'y13', 'y14', 'y15', 'y16', 'y17', 'y18','y19',
'y20','y21','y22','y23','y24','y25','y26','y27','y28','y29','y30')
county_dict = {}
for col, county in enumerate(WyomingCnty):
county_dict[county] = {}
county_popdata = popdata.col_values(colx=col, start_rowx=1, end_rowx=None)
county_incdata = incomedata.col_values(colx=col, start_rowx=1, endrowx=None)
county_dict[county]['population'] = county_popdata
county_dict[county]['income'] = county_incdata
county_dict[county]['pop_by_year'] = dict(zip(Years, county_popdata))
county_dict[county]['inc_by_year'] = dict(zip(Years, county_incdata))
3
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会继续进行。比如说,如果你想让程序在用户输入正确的密码后才能进入系统,你就需要设置一个条件判断。
条件判断的基本思路是:先检查某个条件是否成立,如果成立,就执行某些代码;如果不成立,就执行其他的代码。这样可以让程序更加灵活,能够根据不同的情况做出不同的反应。
总之,条件判断就像是给程序设定了一条“路”,只有当条件满足时,程序才能走上这条路,继续执行后面的任务。
popdict = {}
incdict = {}
for ix, city in enumerate(WyomingCnty):
popdict[city] = dict(zip(Years, popdata.col_values(colx=ix + 1,start_rowx=1,end_rowx=None)
incdict[city] = dict(zip(Years, incomedata.col_values(colx=ix + 1,start_rowx=1,end_rowx=None)