如何使用循环命令创建多个字典变量?

1 投票
2 回答
4168 浏览
提问于 2025-04-16 20:02

这是我第一次使用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)

撰写回答