The d’Hondt method is a form of electoral seat allocation, a system for converting votes into seats with the goal of reflecting the preferences of voters after an election.
Origin and Countries That Use It
This system was created in 1878 by Victor d’Hondt, a Belgian jurist and professor of civil and tax law at the University of Ghent. This method is used in several countries worldwide, including Argentina, Belgium, Brazil, Croatia, Spain, Netherlands, and Portugal, among many others.
Key Features
The main characteristic of this method is that it benefits larger parties over smaller ones, often leading to bipartisan political systems. We will look at the case of the 23J General Elections in Spain, where, proportionally, the two largest parties, PP and PSOE, should have fewer seats, while smaller parties like SUMAR or VOX should have more seats at the expense of the larger parties.
In Spain
In our country, this system is applied through constituencies, which are the different provinces. Each province is assigned a certain number of deputies. The law ensures that each province can elect at least two deputies, and each autonomous city (Ceuta and Melilla) elects one deputy each. This means 102 seats are assigned by law, and the remaining 248 seats are allocated proportionally to the population of each province.
The constituency with the highest number of seats is Madrid, with 37 deputies, and the other provinces have the following seat allocations:
Seats by constituency for the 23J general elections. Source: BOE. Chart: epdata.
Differences Between Seats and Population
Below is a table showing the differences between the percentage of seats allocated to each constituency and the percentage of the population they represent. This difference is calculated by subtracting the population percentage from the seat percentage. The first constituency in the list has fewer seats than it should, and the last one has more seats than it should.
Constituency | % Seats | % Population | Difference (%) |
---|---|---|---|
Madrid | 10.57% | 14.07% | -3.50% |
Barcelona | 9.14% | 12.10% | -2.96% |
Valencia | 4.57% | 5.49% | -0.92% |
Seville | 3.43% | 4.15% | -0.72% |
Alicante | 3.43% | 4.00% | -0.57% |
Málaga | 3.14% | 3.63% | -0.48% |
Murcia | 2.86% | 3.22% | -0.36% |
Balearic Islands | 2.29% | 2.57% | -0.29% |
Santa Cruz de Tenerife | 2.00% | 2.21% | -0.21% |
Vizcaya | 2.29% | 2.42% | -0.13% |
Asturias | 2.00% | 2.09% | -0.09% |
Las Palmas | 2.29% | 2.38% | -0.09% |
La Coruña | 2.29% | 2.34% | -0.05% |
Cádiz | 2.57% | 2.62% | -0.05% |
Zaragoza | 2.00% | 2.04% | -0.04% |
Tarragona | 1.71% | 1.75% | -0.03% |
Pontevedra | 2.00% | 1.99% | 0.01% |
Badajoz | 1.43% | 1.41% | 0.02% |
Navarra | 1.43% | 1.40% | 0.03% |
Girona | 1.71% | 1.67% | 0.04% |
Granada | 2.00% | 1.94% | 0.06% |
Córdoba | 1.71% | 1.63% | 0.08% |
Melilla | 0.29% | 0.18% | 0.10% |
Ceuta | 0.29% | 0.18% | 0.11% |
Almería | 1.71% | 1.59% | 0.12% |
Jaén | 1.43% | 1.30% | 0.13% |
Guipúzcoa | 1.71% | 1.53% | 0.18% |
Castellón | 1.43% | 1.24% | 0.19% |
León | 1.14% | 0.94% | 0.20% |
Cantabria | 1.43% | 1.22% | 0.20% |
Toledo | 1.71% | 1.49% | 0.22% |
Lleida | 1.14% | 0.91% | 0.23% |
Guadalajara | 0.86% | 0.57% | 0.29% |
Huelva | 1.43% | 1.11% | 0.31% |
Cáceres | 1.14% | 0.82% | 0.32% |
Albacete | 1.14% | 0.81% | 0.33% |
Valladolid | 1.43% | 1.10% | 0.33% |
Soria | 0.57% | 0.19% | 0.38% |
Ciudad Real | 1.43% | 1.04% | 0.39% |
Huesca | 0.86% | 0.47% | 0.39% |
Burgos | 1.14% | 0.75% | 0.39% |
Álava | 1.14% | 0.71% | 0.43% |
Cuenca | 0.86% | 0.41% | 0.44% |
Salamanca | 1.14% | 0.69% | 0.45% |
Lugo | 1.14% | 0.67% | 0.47% |
La Rioja | 1.14% | 0.67% | 0.47% |
Zamora | 0.86% | 0.36% | 0.50% |
Ourense | 1.14% | 0.64% | 0.51% |
Palencia | 0.86% | 0.34% | 0.52% |
Ávila | 0.86% | 0.33% | 0.53% |
Segovia | 0.86% | 0.32% | 0.53% |
Teruel | 0.86% | 0.28% | 0.57% |
Notable differences include Madrid and Barcelona, which have significantly fewer seats than they should (49 and 42, respectively), while provinces like Valencia, Seville, and Alicante should each have two or three additional seats.
At the bottom are constituencies like Palencia, Ávila, Segovia, and Teruel, which have two seats by law (the minimum), but proportionally should only have one.
How the Method Works
Let’s see how this method works with an example: distributing 5 seats among four parties: A, B, C, and D. There are 100 votes in total:
- A gets 43 votes.
- B gets 28 votes.
- C gets 15 votes.
- D gets 14 votes.
To transform these votes into seats, we divide each party’s votes by 1, 2, 3, and so on, up to 5 (the number of seats we want to allocate). Here’s the table showing the results of these divisions:
Party | /1 | /2 | /3 | /4 | /5 |
---|---|---|---|---|---|
A | 43 | 21.5 | 14.3 | 10.75 | 8.6 |
B | 28 | 14 | 9.3 | 7 | 5.6 |
C | 15 | 7.5 | 5 | 3.75 | 3 |
D | 14 | 7 | 4.7 | 3.5 | 2.8 |
To determine how many seats each party gets, we take the five highest quotients from the table:
- A has three of the highest quotients, so it gets 3 seats.
- B has one of the highest quotients, so it gets 1 seat.
- C has one of the highest quotients, so it gets 1 seat.
- D does not have any of the highest quotients, so it gets no seats.
Is it Proportional?
In this example, we see how the largest party (A) has gained one more seat than it would be entitled to, while the smallest party (D) has lost one seat that it would have deserved proportionally.
This method is applied in each constituency in Spain, based on the votes in that constituency and the number of seats assigned, and then the seats obtained across the entire country are added up for the final result.
What If There Was One Single Constituency in Spain?
Often, we wonder: what if all the votes in Spain counted equally, regardless of where they were cast? In this article, we will use a Python program to calculate whether there would be much of a difference compared to the results of the last general elections. Here is the code snippet:
# Input data for seats and parties
nSeats = int(input("Number of seats: "))
nParties = int(input("Number of parties: "))
# Create dictionary for parties and seats, and a list for quotients
parties = {}
quotients = []
# For each party
for a in range(nParties):
# Input party name and votes
name = input("Party name: ")
votes = int(input("Number of votes: "))
# Set the seat counter to 0
parties[name] = 0
# For each seat, perform the division and add it to the quotient list
for b in range(nSeats):
quotients.append([votes/(b+1), name])
# Sort the quotient list from lowest to highest
quotients.sort()
# For each seat, take the largest quotient (the last one), remove it from the list, and add a seat to that party
for a in range(nSeats):
parties[quotients.pop(0)[1]] += 1
# Print the dictionary with parties and seats
print(parties)
### Results
| Party | Votes | 23J | Single Constituency | Difference |
|-----------|-------------|------|---------------------|------------|
| PP | 8,091,840 | 137 | 120 | -17 |
| PSOE | 7,760,970 | 121 | 115 | -6 |
| VOX | 3,033,744 | 33 | 45 | +12 |
| SUMAR | 3,014,006 | 31 | 45 | +14 |
| ERC | 462,883 | 7 | 6 | -1 |
| Junts | 392,634 | 7 | 5 | -2 |
| EH Bildu | 333,362 | 6 | 4 | -2 |
| PNV | 275,782 | 5 | 4 | -1 |
| BNG | 152,327 | 1 | 2 | +1 |
| CCa | 114,718 | 1 | 1 | 0 |
| UPN | 51,764 | 1 | 0 | -1 |
| PACMA | 165,768 | 0 | 2 | +2 |
| CUP | 98,794 | 0 | 1 | +1 |
With a single constituency, the **two largest parties** would lose many deputies, which would primarily benefit **VOX and SUMAR**. There are also parties like **PACMA** and **CUP** that previously had no representation but would have representation with a single constituency. On the other hand, smaller parties lose representation, such as **UPN**, as they lose the **benefit of local voting within their constituency** which helped local parties, compared to parties like **PACMA**, which do not receive many votes within a single constituency but do so across the entire country.
## Finally, Is it Proportional?
To conclude, let's analyze if the seats obtained on the 23J elections are proportional to the votes received.
| Party | Votes | 23J | Proportional Seats | Difference |
|-----------|-------------|------|---------------------|------------|
| PP | 8,091,840 | 137 | 131.77 | -5.23 |
| PSOE | 7,760,970 | 121 | 115.82 | -5.18 |
| VOX | 3,033,744 | 33 | 39.32 | +6.32 |
| SUMAR | 3,014,006 | 31 | 38.70 | +7.70 |
| ERC | 462,883 | 7 | 6.87 | -0.13 |
| Junts | 392,634 | 7 | 5.82 | -1.18 |
| EH Bildu | 333,362 | 6 | 4.91 | -1.09 |
| PNV | 275,782 | 5 | 4.20 | -0.80 |
| BNG | 152,327 | 1 | 1.90 | +0.90 |
| CCa | 114,718 | 1 | 1.43 | +0.43 |
| UPN | 51,764 | 1 | 0.64 | -0.36 |
| PACMA | 165,768 | 0 | 2.06 | +2.06 |
| CUP | 98,794 | 0 | 1.22 | +1.22 |
In this section, we calculate how many seats each party would receive proportionally to the votes they received. It is important to note that this result is not entirely accurate, as **we do not take into account the different constituencies of the country**, and we treat it as if it were a single constituency.
As discussed throughout the article, in a proportional allocation, the **two major parties, PP and PSOE**, would **lose seats**, while **medium-sized parties, VOX and SUMAR**, would **gain seats**. Just like when using the d'Hondt method with a single constituency, **parties like PACMA and CUP would gain representation** by removing the **benefit for local parties** that the different constituencies give.
## Final Conclusions
In summary, this allocation method **favors larger parties**, often leading to **bipartisanship**, and **hurts smaller parties**. It is also important to understand that in Spain, we have **different constituencies** that make **local parties** significant due to the seats they can obtain in their areas by receiving more votes locally than other parties, but fewer votes nationally.
## References
1. [Wikipedia: Victor d'Hondt](https://es.wikipedia.org/wiki/Victor_d%27Hondt)
2. [Wikipedia: d'Hondt System](https://es.wikipedia.org/wiki/Sistema_D%27Hondt)
3. [El País: 1984 Article](https://elpais.com/diario/1984/07/30/espana/459986406_850215.html?event_log=go#)
4. National Statistics Institute (INE)