Skip to content

Instantly share code, notes, and snippets.

@dsample
Last active July 4, 2016 21:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dsample/78140b399028c4ee2d71 to your computer and use it in GitHub Desktop.
Save dsample/78140b399028c4ee2d71 to your computer and use it in GitHub Desktop.
How might the 2010 UK General Election results have looked if we had been using the D'Hondt method of calculating seat allocation.
{
"Wales": {
"population": 2265125,
"constituencies": [
"Aberavon",
"Aberconwy",
"Alyn & Deeside",
"Arfon",
"Blaenau Gwent",
"Brecon & Radnorshire",
"Bridgend",
"Caerphilly",
"Cardiff Central",
"Cardiff North",
"Cardiff South & Penarth",
"Cardiff West",
"Carmarthen East & Dinefwr",
"Carmarthen West & Pembrokeshire South",
"Ceredigion",
"Clwyd South",
"Clwyd West",
"Cynon Valley",
"Delyn",
"Dwyfor Meirionnydd",
"Gower",
"Islwyn",
"Llanelli",
"Merthyr Tydfil & Rhymney",
"Monmouth",
"Montgomeryshire",
"Neath",
"Newport East",
"Newport West",
"Ogmore",
"Pontypridd",
"Preseli Pembrokeshire",
"Rhondda",
"Swansea East",
"Swansea West",
"Torfaen",
"Vale of Clwyd",
"Vale of Glamorgan",
"Wrexham",
"Ynys Mon"
],
"total_votes": {
"Bean": 558,
"BNP": 23088,
"Con": 382730,
"Ind1": 13704,
"Lab": 531602,
"LD": 295164,
"PC": 165394,
"UKIP": 35684,
"Ch P": 1947,
"BGPV": 6458,
"Soc Lab": 1155,
"Grn": 6293,
"MRLP": 352,
"TUSC": 341,
"Comm": 196,
"Ind2": 1508,
"NF": 384,
"AGS": 127
},
"seats": {
"traditional": {
"Lab": 26,
"Con": 8,
"PC": 3,
"LD": 3
},
"dhondt": {
"Lab": 16,
"Con": 11,
"LD": 8,
"PC": 4,
"UKIP": 1
},
"dhondt_by_population": {
"Lab": 12,
"Con": 9,
"LD": 7,
"PC": 4
}
},
"seat_allocation": 32
},
"Scotland": {
"population": 3863042,
"constituencies": [
"Aberdeen North",
"Aberdeen South",
"Aberdeenshire West & Kincardine",
"Airdrie & Shotts",
"Angus",
"Argyll & Bute",
"Ayr, Carrick & Cumnock",
"Ayrshire Central",
"Ayrshire North & Arran",
"Banff & Buchan",
"Berwickshire, Roxburgh & Selkirk",
"Caithness, Sutherland & Easter Ross",
"Coatbridge, Chryston & Bellshill",
"Cumbernauld, Kilsyth & Kirkintilloch East",
"Dumfries & Galloway",
"Dumfriesshire, Clydesdale & Tweeddale",
"Dunbartonshire East",
"Dunbartonshire West",
"Dundee East",
"Dundee West",
"Dunfermline & Fife West",
"East Kilbride, Strathaven & Lesmahagow",
"East Lothian",
"Edinburgh East",
"Edinburgh North & Leith",
"Edinburgh South",
"Edinburgh South West",
"Edinburgh West",
"Falkirk",
"Fife North East",
"Glasgow Central",
"Glasgow East",
"Glasgow North",
"Glasgow North East",
"Glasgow North West",
"Glasgow South",
"Glasgow South West",
"Glenrothes",
"Gordon",
"Inverclyde",
"Inverness, Nairn, Badenoch & Strathspey",
"Kilmarnock & Loudoun",
"Kirkcaldy & Cowdenbeath",
"Lanark & Hamilton East",
"Linlithgow & Falkirk East",
"Livingston",
"Midlothian",
"Moray",
"Motherwell & Wishaw",
"Na h-Eileanan an Iar (Western Isles)",
"Ochil & South Perthshire",
"Orkney & Shetland",
"Paisley & Renfrewshire North",
"Paisley & Renfrewshire South",
"Perth & North Perthshire",
"Renfrewshire East",
"Ross, Skye & Lochaber",
"Rutherglen & Hamilton West",
"Stirling"
],
"total_votes": {
"BNP": 8910,
"Con": 412905,
"Lab": 1035528,
"LD": 465471,
"SNP": 491386,
"SSP": 3157,
"Grn": 16827,
"SACL": 138,
"UKIP": 17223,
"Ind1": 6065,
"SJP": 290,
"Soc Lab": 1673,
"TUSC": 3530,
"Lib": 389,
"Comm L": 48,
"Pirate": 128,
"Comm": 179,
"Ch P": 835,
"Joy": 93,
"Ind2": 414,
"Land": 57,
"Trust": 534
},
"seats": {
"traditional": {
"Lab": 41,
"LD": 11,
"SNP": 6,
"Con": 1
},
"dhondt": {
"Lab": 26,
"SNP": 12,
"LD": 11,
"Con": 10
},
"dhondt_by_population": {
"Lab": 24,
"SNP": 11,
"LD": 11,
"Con": 9
}
},
"seat_allocation": 55
},
"South East": {
"population": 6298261,
"constituencies": [
"Aldershot",
"Arundel & South Downs",
"Ashford",
"Aylesbury",
"Banbury",
"Basingstoke",
"Beaconsfield",
"Bexhill & Battle",
"Bognor Regis & Littlehampton",
"Bracknell",
"Brighton Kemptown",
"Brighton Pavilion",
"Buckingham",
"Canterbury",
"Chatham & Aylesford",
"Chesham & Amersham",
"Chichester",
"Crawley",
"Dartford",
"Dover",
"Eastbourne",
"Eastleigh",
"Epsom & Ewell",
"Esher & Walton",
"Fareham",
"Faversham & Kent Mid",
"Folkestone & Hythe",
"Gillingham & Rainham",
"Gosport",
"Gravesham",
"Guildford",
"Hampshire East",
"Hampshire North East",
"Hampshire North West",
"Hastings & Rye",
"Havant",
"Henley",
"Horsham",
"Hove",
"Isle of Wight",
"Lewes",
"Maidenhead",
"Maidstone & The Weald",
"Meon Valley",
"Milton Keynes North",
"Milton Keynes South",
"Mole Valley",
"New Forest East",
"New Forest West",
"Newbury",
"Oxford East",
"Oxford West & Abingdon",
"Portsmouth North",
"Portsmouth South",
"Reading East",
"Reading West",
"Reigate",
"Rochester & Strood",
"Romsey & Southampton North",
"Runnymede & Weybridge",
"Sevenoaks",
"Sittingbourne & Sheppey",
"Slough",
"Southampton Itchen",
"Southampton Test",
"Spelthorne",
"Surrey East",
"Surrey Heath",
"Surrey South West",
"Sussex Mid",
"Thanet North",
"Thanet South",
"Tonbridge & Malling",
"Tunbridge Wells",
"Wantage",
"Wealden",
"Winchester",
"Windsor",
"Witney",
"Woking",
"Wokingham",
"Worthing East & Shoreham",
"Worthing West",
"Wycombe"
],
"total_votes": {
"Ch P": 2104,
"Con": 2118035,
"EIP": 803,
"Lab": 697567,
"LD": 1124786,
"UKIP": 177260,
"Grn": 62120,
"Ind1": 20643,
"BCP": 247,
"MPEA": 475,
"BNP": 30618,
"Trust": 2699,
"SMA": 60,
"TUSC": 692,
"CURE": 61,
"ND": 194,
"Soc Lab": 148,
"CTDP": 107,
"Ind2": 3407,
"Ind3": 1752,
"Ind4": 435,
"Ind5": 332,
"MRLP": 3315,
"Speaker": 22860,
"MRP": 173,
"ED": 15442,
"JP": 265,
"FDP": 207,
"CPA": 651,
"Nat Lib": 93,
"RRG": 266,
"Best": 474,
"NF": 1690,
"MEDI": 109,
"PPNV": 737,
"JAC": 427,
"MEP": 616,
"FFR": 270,
"APP": 398,
"NFP": 84,
"AD": 95,
"EPA": 73,
"SEP": 116,
"CSP": 852,
"CIP": 167,
"IFED": 102,
"Pirate": 94,
"Wessex Reg": 62,
"MCP": 44
},
"seats": {
"traditional": {
"Con": 74,
"Grn": 1,
"Speaker": 1,
"LD": 4,
"Lab": 4
},
"dhondt": {
"Con": 43,
"LD": 23,
"Lab": 14,
"UKIP": 3,
"Grn": 1
},
"dhondt_by_population": {
"Con": 46,
"LD": 24,
"Lab": 15,
"UKIP": 3,
"Grn": 1
}
},
"seat_allocation": 89
},
"West Midlands": {
"population": 4084007,
"constituencies": [
"Aldridge-Brownhills",
"Birmingham Edgbaston",
"Birmingham Erdington",
"Birmingham Hall Green",
"Birmingham Hodge Hill",
"Birmingham Ladywood",
"Birmingham Northfield",
"Birmingham Perry Barr",
"Birmingham Selly Oak",
"Birmingham Yardley",
"Bromsgrove",
"Burton",
"Cannock Chase",
"Coventry North East",
"Coventry North West",
"Coventry South",
"Dudley North",
"Dudley South",
"Halesowen & Rowley Regis",
"Hereford & Herefordshire South",
"Herefordshire North",
"Kenilworth & Southam",
"Lichfield",
"Ludlow",
"Meriden",
"Newcastle-under-Lyme",
"Nuneaton",
"Redditch",
"Rugby",
"Shrewsbury & Atcham",
"Shropshire North",
"Solihull",
"Stafford",
"Staffordshire Moorlands",
"Staffordshire South",
"Stoke-on-Trent Central",
"Stoke-on-Trent North",
"Stoke-on-Trent South",
"Stone",
"Stourbridge",
"Stratford-on-Avon",
"Sutton Coldfield",
"Tamworth",
"Telford",
"Walsall North",
"Walsall South",
"Warley",
"Warwick & Leamington",
"Warwickshire North",
"West Bromwich East",
"West Bromwich West",
"Wolverhampton North East",
"Wolverhampton South East",
"Wolverhampton South West",
"Worcester",
"Worcestershire Mid",
"Worcestershire West",
"Wrekin, The",
"Wyre Forest"
],
"total_votes": {
"Ch P": 2366,
"Con": 1044081,
"Grn": 14996,
"Lab": 808101,
"LD": 540280,
"BNP": 73394,
"Impact": 234,
"UKIP": 105685,
"Ind1": 6776,
"NF": 751,
"Respect": 12240,
"Soc Dem": 637,
"CG": 305,
"Soc Lab": 864,
"BIC": 2182,
"Ind2": 794,
"GSOT": 259,
"Ch M": 598,
"Soc Alt": 2653,
"MRLP": 179,
"SMRA": 977,
"ED": 2289,
"Nobody": 73,
"CITY": 303,
"ND": 803,
"TUSC": 133,
"SIG": 1208,
"D Lab": 842,
"EPA": 246,
"Pirate": 173,
"ICHC": 16150
},
"seats": {
"traditional": {
"Con": 33,
"Lab": 24,
"LD": 2
},
"dhondt": {
"Con": 25,
"Lab": 19,
"LD": 12,
"UKIP": 2,
"BNP": 1
},
"dhondt_by_population": {
"Con": 24,
"Lab": 19,
"LD": 12,
"UKIP": 2,
"BNP": 1
}
},
"seat_allocation": 58
},
"North West": {
"population": 5255192,
"constituencies": [
"Altrincham & Sale West",
"Ashton Under Lyne",
"Barrow & Furness",
"Birkenhead",
"Blackburn",
"Blackley & Broughton",
"Blackpool North & Cleveleys",
"Blackpool South",
"Bolton North East",
"Bolton South East",
"Bolton West",
"Bootle",
"Burnley",
"Bury North",
"Bury South",
"Carlisle",
"Cheadle",
"Chester, City of",
"Chorley",
"Congleton",
"Copeland",
"Crewe & Nantwich",
"Denton & Reddish",
"Eddisbury",
"Ellesmere Port & Neston",
"Fylde",
"Garston & Halewood",
"Halton",
"Hazel Grove",
"Heywood & Middleton",
"Hyndburn",
"Knowsley",
"Lancashire West",
"Lancaster & Fleetwood",
"Leigh",
"Liverpool Riverside",
"Liverpool Walton",
"Liverpool Wavertree",
"Liverpool West Derby",
"Macclesfield",
"Makerfield",
"Manchester Central",
"Manchester Gorton",
"Manchester Withington",
"Morecambe & Lunesdale",
"Oldham East & Saddleworth",
"Oldham West & Royton",
"Pendle",
"Penrith & The Border",
"Preston",
"Ribble Valley",
"Rochdale",
"Rossendale & Darwen",
"Salford & Eccles",
"Sefton Central",
"South Ribble",
"Southport",
"St Helens North",
"St Helens South & Whiston",
"Stalybridge & Hyde",
"Stockport",
"Stretford & Urmston",
"Tatton",
"Wallasey",
"Warrington North",
"Warrington South",
"Weaver Vale",
"Westmorland & Lonsdale",
"Wigan",
"Wirral South",
"Wirral West",
"Workington",
"Worsley & Eccles South",
"Wyre & Preston North",
"Wythenshawe & Sale East"
],
"total_votes": {
"Con": 1038767,
"Lab": 1289934,
"LD": 707774,
"UKIP": 103782,
"BNP": 70032,
"Grn": 17046,
"Ind1": 15933,
"BIB": 1424,
"Ind2": 2185,
"Ch P": 1355,
"Respect": 2398,
"MRLP": 198,
"IUK": 230,
"You": 319,
"CPA": 1287,
"TUSC": 2378,
"Pirate": 367,
"ED": 4533,
"ND": 589,
"C28": 217,
"Soc Lab": 1450,
"Lib": 3327,
"MACI": 2590,
"SEP": 54,
"WRP": 59,
"IZB": 545,
"NF": 3298,
"Impact": 243,
"Poet": 298,
"Ind3": 57,
"CSP": 321
},
"seats": {
"traditional": {
"Con": 22,
"Lab": 47,
"LD": 6
},
"dhondt": {
"Lab": 31,
"Con": 24,
"LD": 17,
"UKIP": 2,
"BNP": 1
},
"dhondt_by_population": {
"Lab": 30,
"Con": 24,
"LD": 17,
"UKIP": 2,
"BNP": 1
}
},
"seat_allocation": 74
},
"East Midlands": {
"population": 3332058,
"constituencies": [
"Amber Valley",
"Ashfield",
"Bassetlaw",
"Bolsover",
"Boston & Skegness",
"Bosworth",
"Broxtowe",
"Charnwood",
"Chesterfield",
"Corby",
"Daventry",
"Derby North",
"Derby South",
"Derbyshire Dales",
"Derbyshire Mid",
"Derbyshire North East",
"Derbyshire South",
"Erewash",
"Gainsborough",
"Gedling",
"Grantham & Stamford",
"Harborough",
"High Peak",
"Kettering",
"Leicester East",
"Leicester South",
"Leicester West",
"Leicestershire North West",
"Leicestershire South",
"Lincoln",
"Loughborough",
"Louth & Horncastle",
"Mansfield",
"Newark",
"Northampton North",
"Northampton South",
"Northamptonshire South ",
"Nottingham East",
"Nottingham North",
"Nottingham South",
"Rushcliffe",
"Rutland & Melton",
"Sherwood",
"Sleaford & North Hykeham",
"South Holland & The Deepings",
"Wellingborough"
],
"total_votes": {
"BNP": 69706,
"Con": 915933,
"Lab": 661869,
"LD": 463068,
"MRLP": 712,
"UKIP": 72659,
"ED": 8641,
"Ind1": 7621,
"Sci": 197,
"Grn": 11667,
"Pirate": 283,
"Hum": 50,
"Soc Lab": 266,
"LIND": 5311,
"ND": 74,
"BP Elvis": 112,
"UPS": 494,
"Ind2": 264,
"TUSC": 406,
"MIF": 4339,
"Ch P": 223,
"NSPS": 325,
"SMA": 59
},
"seats": {
"traditional": {
"Con": 31,
"Lab": 15
},
"dhondt": {
"Con": 20,
"Lab": 14,
"LD": 10,
"UKIP": 1,
"BNP": 1
},
"dhondt_by_population": {
"Con": 20,
"Lab": 15,
"LD": 10,
"UKIP": 1,
"BNP": 1
}
},
"seat_allocation": 47
},
"Northern Ireland": {
"population": 1169184,
"constituencies": [
"Antrim East",
"Antrim North",
"Antrim South",
"Belfast East",
"Belfast North",
"Belfast South",
"Belfast West",
"Down North",
"Down South",
"Fermanagh & South Tyrone",
"Foyle",
"Lagan Valley",
"Londonderry East",
"Newry & Armagh",
"Strangford",
"Tyrone West",
"Ulster Mid",
"Upper Bann"
],
"total_votes": {
"APNI": 42762,
"DUP": 168216,
"SDLP": 110970,
"SF": 171942,
"TUV": 26300,
"UCUNF": 102361,
"ND": 606,
"Ind1": 44048,
"Grn": 3542,
"Ind2": 188,
"PBP": 2936
},
"seats": {
"traditional": {
"DUP": 8,
"APNI": 1,
"SDLP": 3,
"SF": 5,
"Ind1": 1
},
"dhondt": {
"SF": 5,
"DUP": 5,
"SDLP": 3,
"UCUNF": 3,
"Ind1": 1,
"APNI": 1
},
"dhondt_by_population": {
"SF": 5,
"DUP": 4,
"SDLP": 3,
"UCUNF": 2,
"Ind1": 1,
"APNI": 1
}
},
"seat_allocation": 16
},
"London": {
"population": 5276910,
"constituencies": [
"Barking",
"Battersea",
"Beckenham",
"Bermondsey & Old Southwark",
"Bethnal Green & Bow",
"Bexleyheath & Crayford",
"Brent Central",
"Brent North",
"Brentford & Isleworth",
"Bromley & Chislehurst",
"Camberwell & Peckham",
"Carshalton & Wallington",
"Chelsea & Fulham",
"Chingford & Woodford Green",
"Chipping Barnet",
"Cities of London & Westminster",
"Croydon Central",
"Croydon North",
"Croydon South",
"Dagenham & Rainham",
"Dulwich & West Norwood",
"Ealing Central & Acton",
"Ealing North",
"Ealing Southall",
"East Ham",
"Edmonton",
"Eltham",
"Enfield North",
"Enfield Southgate",
"Erith & Thamesmead",
"Feltham & Heston",
"Finchley & Golders Green",
"Greenwich & Woolwich",
"Hackney North & Stoke Newington",
"Hackney South & Shoreditch",
"Hammersmith",
"Hampstead & Kilburn",
"Harrow East",
"Harrow West",
"Hayes & Harlington",
"Hendon",
"Holborn & St Pancras",
"Hornchurch & Upminster",
"Hornsey & Wood Green",
"Ilford North",
"Ilford South",
"Islington North",
"Islington South & Finsbury",
"Kensington",
"Kingston & Surbiton",
"Lewisham Deptford",
"Lewisham East",
"Lewisham West & Penge",
"Leyton & Wanstead",
"Mitcham & Morden",
"Old Bexley & Sidcup",
"Orpington",
"Poplar & Limehouse",
"Putney",
"Richmond Park",
"Romford",
"Ruislip, Northwood & Pinner",
"Streatham",
"Sutton & Cheam",
"Tooting",
"Tottenham",
"Twickenham",
"Uxbridge & Ruislip South",
"Vauxhall",
"Walthamstow",
"West Ham",
"Westminster North",
"Wimbledon"
],
"total_votes": {
"BNP": 52095,
"Ch P": 7590,
"Con": 1174477,
"Grn": 54316,
"Ind1": 10931,
"Lab": 1245625,
"LD": 751613,
"MRLP": 858,
"Rest": 45,
"UKIP": 59452,
"PPBF": 168,
"ED": 9076,
"ND": 986,
"Ind2": 1863,
"Ind3": 318,
"Pirate": 303,
"Respect": 17368,
"UV": 209,
"CPA": 3476,
"AWL": 75,
"Soc Lab": 184,
"WRP": 502,
"Blue": 17,
"NICF": 196,
"Comm": 160,
"IEAC": 190,
"Reform": 379,
"BB": 35,
"TUSC": 1603,
"MCP": 68,
"Comm L": 110,
"DDP": 202,
"Lib": 539,
"TOC": 123,
"NF": 2825,
"SKGP": 746,
"AC": 149,
"AGS": 197,
"Soc Alt": 645,
"CNPG": 332,
"IFED": 99,
"ISQM": 393,
"Libert": 41,
"IPT": 265,
"CURE": 76,
"APP": 96,
"AWP": 109,
"Soc": 143
},
"seats": {
"traditional": {
"Lab": 38,
"Con": 28,
"LD": 7
},
"dhondt": {
"Lab": 28,
"Con": 26,
"LD": 16,
"UKIP": 1,
"Grn": 1,
"BNP": 1
},
"dhondt_by_population": {
"Lab": 28,
"Con": 27,
"LD": 17,
"UKIP": 1,
"Grn": 1,
"BNP": 1
}
},
"seat_allocation": 75
},
"Yorkshire and the Humber": {
"population": 3827033,
"constituencies": [
"Barnsley Central",
"Barnsley East",
"Batley & Spen",
"Beverley & Holderness",
"Bradford East",
"Bradford South",
"Bradford West",
"Brigg & Goole",
"Calder Valley",
"Cleethorpes",
"Colne Valley",
"Dewsbury",
"Don Valley",
"Doncaster Central",
"Doncaster North",
"Elmet & Rothwell",
"Great Grimsby",
"Halifax",
"Haltemprice & Howden",
"Harrogate & Knaresborough",
"Hemsworth",
"Huddersfield",
"Hull East",
"Hull North",
"Hull West & Hessle",
"Keighley",
"Leeds Central",
"Leeds East",
"Leeds North East",
"Leeds North West",
"Leeds West",
"Morley & Outwood",
"Normanton, Pontefract & Castleford",
"Penistone & Stocksbridge",
"Pudsey",
"Richmond (Yorks)",
"Rother Valley",
"Rotherham",
"Scarborough & Whitby",
"Scunthorpe",
"Selby & Ainsty",
"Sheffield Brightside & Hillsborough",
"Sheffield Central",
"Sheffield Hallam",
"Sheffield Heeley",
"Sheffield South East",
"Shipley",
"Skipton & Ripon",
"Thirsk & Malton",
"Wakefield",
"Wentworth & Dearne",
"York Central",
"York Outer",
"Yorkshire East"
],
"total_votes": {
"BNP": 104167,
"Con": 790062,
"Ind1": 18439,
"Ind2": 1706,
"Lab": 826537,
"LD": 551738,
"Soc Lab": 957,
"UKIP": 68378,
"Grn": 20824,
"NF": 1237,
"D Nat": 753,
"Respect": 1245,
"ED": 11722,
"TUSC": 2047,
"CURE": 72,
"PNDP": 331,
"IVH": 722,
"ND": 155,
"AGS": 1257,
"Ch P": 250,
"MRLP": 318,
"Comm": 139,
"VCCA": 84,
"Youth": 95,
"Lib": 1418,
"Soc Dem": 914
},
"seats": {
"traditional": {
"Lab": 32,
"Con": 19,
"LD": 3
},
"dhondt": {
"Lab": 19,
"Con": 19,
"LD": 13,
"BNP": 2,
"UKIP": 1
},
"dhondt_by_population": {
"Lab": 19,
"Con": 19,
"LD": 13,
"BNP": 2,
"UKIP": 1
}
},
"seat_allocation": 54
},
"Eastern": {
"population": 4257453,
"constituencies": [
"Basildon & Billericay",
"Basildon South & Thurrock East",
"Bedford",
"Bedfordshire Mid",
"Bedfordshire North East",
"Bedfordshire South West",
"Braintree",
"Brentwood & Ongar",
"Broadland",
"Broxbourne",
"Bury St Edmunds",
"Cambridge",
"Cambridgeshire North East",
"Cambridgeshire North West",
"Cambridgeshire South",
"Cambridgeshire South East",
"Castle Point",
"Chelmsford",
"Clacton",
"Colchester",
"Epping Forest",
"Great Yarmouth",
"Harlow",
"Harwich & Essex North",
"Hemel Hempstead",
"Hertford & Stortford",
"Hertfordshire North East",
"Hertfordshire South West",
"Hertsmere",
"Hitchin & Harpenden",
"Huntingdon",
"Ipswich",
"Luton North",
"Luton South",
"Maldon",
"Norfolk Mid",
"Norfolk North",
"Norfolk North West",
"Norfolk South",
"Norfolk South West",
"Norwich North",
"Norwich South",
"Peterborough",
"Rayleigh & Wickford",
"Rochford & Southend East",
"Saffron Walden",
"Southend West",
"St Albans",
"Stevenage",
"Suffolk Central & Ipswich North",
"Suffolk Coastal",
"Suffolk South",
"Suffolk West",
"Thurrock",
"Watford",
"Waveney",
"Welwyn Hatfield",
"Witham"
],
"total_votes": {
"BNP": 59505,
"Con": 1356680,
"Lab": 564581,
"LD": 692932,
"UKIP": 123177,
"ND": 258,
"Grn": 42677,
"Ind1": 12343,
"ED": 8390,
"Cam Soc": 362,
"CPA": 862,
"ISGB": 12174,
"RTBP": 153,
"TF": 1078,
"PPE": 35,
"LTT": 100,
"Ch P": 634,
"Ind2": 855,
"YRDPL": 264,
"CURE": 108,
"APP": 181,
"MRLP": 548,
"Ind3": 264,
"Ind4": 130,
"Ind5": 84,
"WRP": 177,
"NCDV": 327,
"New": 118
},
"seats": {
"traditional": {
"Con": 52,
"LD": 4,
"Lab": 2
},
"dhondt": {
"Con": 29,
"LD": 14,
"Lab": 12,
"UKIP": 2,
"BNP": 1
},
"dhondt_by_population": {
"Con": 30,
"LD": 15,
"Lab": 12,
"UKIP": 2,
"BNP": 1
}
},
"seat_allocation": 60
},
"South West": {
"population": 4020915,
"constituencies": [
"Bath",
"Bournemouth East",
"Bournemouth West",
"Bridgwater & Somerset West",
"Bristol East",
"Bristol North West",
"Bristol South",
"Bristol West",
"Camborne & Redruth",
"Cheltenham",
"Chippenham",
"Christchurch",
"Cornwall North",
"Cornwall South East",
"Cotswolds, The",
"Devizes",
"Devon Central",
"Devon East",
"Devon North",
"Devon South West",
"Devon West & Torridge",
"Dorset Mid & Poole North",
"Dorset North",
"Dorset South",
"Dorset West",
"Exeter",
"Filton & Bradley Stoke",
"Forest of Dean",
"Gloucester",
"Kingswood",
"Newton Abbot",
"Plymouth Moor View",
"Plymouth Sutton & Devonport",
"Poole",
"Salisbury",
"Somerset North",
"Somerset North East",
"Somerton & Frome",
"St Austell & Newquay",
"St Ives",
"Stroud",
"Swindon North",
"Swindon South",
"Taunton Deane",
"Tewkesbury",
"Thornbury & Yate",
"Tiverton & Honiton",
"Torbay",
"Totnes",
"Truro & Falmouth",
"Wells",
"Weston-Super-Mare",
"Wiltshire North",
"Wiltshire South West",
"Yeovil"
],
"total_votes": {
"Ch P": 743,
"Con": 1187637,
"Grn": 31517,
"Ind1": 5214,
"Lab": 426910,
"LD": 962954,
"ND": 299,
"South": 31,
"UKIP": 123975,
"BNP": 20866,
"ED": 3277,
"TUSC": 390,
"MK": 5379,
"Soc Lab": 499,
"MRLP": 1030,
"Libert": 141,
"Comm": 96,
"Vote": 233,
"Lib": 1108,
"Ind2": 386,
"ILEU": 236,
"Cor D": 396,
"IFED": 126
},
"seats": {
"traditional": {
"LD": 15,
"Con": 36,
"Lab": 4
},
"dhondt": {
"Con": 25,
"LD": 20,
"Lab": 8,
"UKIP": 2
},
"dhondt_by_population": {
"Con": 25,
"LD": 21,
"Lab": 9,
"UKIP": 2
}
},
"seat_allocation": 57
},
"North East": {
"population": 1948281,
"constituencies": [
"Berwick-upon-Tweed",
"Bishop Auckland",
"Blaydon",
"Blyth Valley",
"Darlington",
"Durham North",
"Durham North West",
"Durham, City of",
"Easington",
"Gateshead",
"Hartlepool",
"Hexham",
"Houghton & Sunderland South",
"Jarrow",
"Middlesbrough",
"Middlesbrough South & Cleveland East",
"Newcastle upon Tyne Central",
"Newcastle upon Tyne East",
"Newcastle upon Tyne North",
"Redcar",
"Sedgefield",
"South Shields",
"Stockton North",
"Stockton South",
"Sunderland Central",
"Tynemouth",
"Tyneside North",
"Wansbeck",
"Washington & Sunderland West"
],
"total_votes": {
"BNP": 51940,
"Con": 282347,
"Lab": 518263,
"LD": 280468,
"UKIP": 32196,
"LLPB": 1964,
"ED": 1456,
"Ind1": 13887,
"Ch P": 575,
"Grn": 3787,
"TUSC": 393,
"Ind2": 417,
"Comm": 177,
"ND": 1365,
"FAWG": 91,
"NF": 599
},
"seats": {
"traditional": {
"LD": 2,
"Lab": 25,
"Con": 2
},
"dhondt": {
"Lab": 14,
"Con": 7,
"LD": 7,
"BNP": 1
},
"dhondt_by_population": {
"Lab": 12,
"Con": 7,
"LD": 7,
"BNP": 1
}
},
"seat_allocation": 27
}
}

Traditional

Labour Party: 258 Conservative Party: 306 Plaid Cymru: 3 Liberal Democrat: 57 Scottish National Party: 6 Green Party: 1 Speaker: 1 Democratic Unionist Party: 8 Sinn Fein: 5 Social Democratic & Labour Party: 3 Alliance Party: 1 Ind1: 1

D'Hondt method per region

Labour Party: 201 Conservative Party: 239 Liberal Democrat: 151 Plaid Cymru: 4 United Kingdom Independence Party: 15 Scottish National Party: 12 Green Party: 2 British National Party: 8 Sinn Fein: 5 Democratic Unionist Party: 5 UCUNF UUP and CON joint party: 3 Social Democratic & Labour Party: 3 Ind1: 1 Alliance Party: 1

D'Hondt method by total population

Labour Party: 195 Conservative Party: 240 Liberal Democrat: 154 Plaid Cymru: 4 Scottish National Party: 11 United Kingdom Independence Party: 14 Green Party: 2 British National Party: 8 Sinn Fein: 5 Democratic Unionist Party: 4 Social Democratic & Labour Party: 3 UCUNF UUP and CON joint party: 2 Ind1: 1 Alliance Party: 1

This uses the data "UK Parliament general election – May 2010" data from the Electoral Commission's Electoral data page.

Assumptions

  • The total votes for each party would be the same in each voting system. This is a big assumption due to tactical voting and people fearing 'wasted votes' for smaller parties which sway them to vote for the top 3 parties.
  • Regions within the data have been used as the method for grouping constituencies. I would have used Local Authority boundaries instead (Counties) but I didn't have that data to hand.

Reading the output

Traditional (aka First Past The Post)

This is the results which come from the first past the post calculation. The only difference to normal is that that I've grouped the constituencies into regions.

D'Hondt method

This uses the D'Hondt method to allocate the same number of seats per region as the number of constituencies within the region.

D'Hondt method by population

The number of seats allocated to each region has been calculated from the total number of seats to be allocated (650) equally divided into the electorate numbers (not population as I didn't have those numbers to hand). Due to it being late when I was coding this bit the maths are a bit basic so the resulting number of seats is slightly lower than necessary (644), but you get the gist.

The 'seat_allocation' field within each region shows the number of seats this method allocates, with the 'population' field showing the total count of electorates within that region (not actual population).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment