def marginals(year, cutoff, printout = True) : # This is a simple analysis which prints out the list of marginals after each # election. I.e. if you would like to know which seats were marginals going into # 1997, modulo boundary changes, ask for the marginals after 1992. The analysis # can be given a cutoff for what you would like to consider a marginal if printout : print print '------------------------------------------------------------' print 'Retreiving marginals below',cutoff+"%",'for',year print '------------------------------------------------------------' print seats = [] for constituency in outputdatabase : if constituency == "elections" : continue # First, does it exist in the given year? if not outputdatabase[constituency].has_key(year) : continue else : thismargin = getmargin(constituency,year,outputdatabase) if 100.0 * thismargin < float(cutoff): seats.append((thismargin,constituency)) seats.sort() if printout : for seat in seats : printmarginal(seat[1],year,outputdatabase) if args.verbose : niceprint(seat[1],outputdatabase,yeartoprint=year) print if printout : print print '------------------------------------------------------------' print 'Finished printout of',len(seats),'marginals below',cutoff+"%",'for',year print '------------------------------------------------------------' print return seats
def marginals_between(party1, party2, year, cutoff, printout = True) : # This is a simple analysis which prints out the list of marginals after each # election which party1 holds with respect to party2. I.e. if you would like to # know which seats were Tory-Labour marginals (held by Tories) going into # 1997, modulo boundary changes, ask for the marginals after 1992. The analysis # can be given a cutoff for what you would like to consider a marginal if printout : print print '------------------------------------------------------------' print 'Retreiving',party1+'-'+party2,'marginals below',cutoff+"%",'for',year print '------------------------------------------------------------' print seats = [] for constituency in outputdatabase : if constituency == "elections" : continue # First, does it exist in the given year? if not outputdatabase[constituency].has_key(year) : continue else : if not party1 == outputdatabase[constituency][year]["winner"]["party"] : continue if not party2 == outputdatabase[constituency][year]["second"]["party"] : continue thismargin = getmargin(constituency,year,outputdatabase) if 100.0 * thismargin < float(cutoff): seats.append((thismargin,constituency)) seats.sort() if printout : for seat in seats : printmarginal(seat[1],year,outputdatabase) if args.verbose : niceprint(seat[1],outputdatabase,yeartoprint=year) print if printout : print print '------------------------------------------------------------' print 'Finished printout of',len(seats),party1+'-'+party2,'marginals below',cutoff+"%",'for',year print '------------------------------------------------------------' print return seats