24 lines
591 B
Python
24 lines
591 B
Python
from collections import defaultdict
|
|
|
|
def hashJoin(table1, index1, table2, index2):
|
|
h = defaultdict(list)
|
|
# hash phase
|
|
for s in table1:
|
|
h[s[index1]].append(s)
|
|
# join phase
|
|
return [(s, r) for r in table2 for s in h[r[index2]]]
|
|
|
|
table1 = [(27, "Jonah"),
|
|
(18, "Alan"),
|
|
(28, "Glory"),
|
|
(18, "Popeye"),
|
|
(28, "Alan")]
|
|
table2 = [("Jonah", "Whales"),
|
|
("Jonah", "Spiders"),
|
|
("Alan", "Ghosts"),
|
|
("Alan", "Zombies"),
|
|
("Glory", "Buffy")]
|
|
|
|
for row in hashJoin(table1, 1, table2, 0):
|
|
print(row)
|