-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhashtable_exercise.py
104 lines (69 loc) · 1.88 KB
/
hashtable_exercise.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
class HashMap:
def __init__(self,MAX):
self.MAX = MAX
self.arr = [[] for i in range(self.MAX)]
def hash(self,key):
h = 0
for i in key:
h += ord(i)
return h % self.MAX
def __setitem__(self, key, value):
h = self.hash(key)
found = False
for idx, elem in enumerate(self.arr[h]):
if elem[0] == key and len(elem) == 2:
self.arr[h][idx] = (key,value)
found = True
break
if found is False:
self.arr[h].append((key,value))
def __delitem__(self, key):
h = self.hash(key)
for idx, elem in enumerate(self.arr[h]):
if elem[0] == key:
del self.arr[h][idx]
def __getitem__(self, key):
h = self.hash(key)
for elem in self.arr[h]:
if elem[0] == key:
return elem[1]
def get_keys(self):
keys = []
for adress in self.arr:
if len(adress) >= 1:
for i in adress:
keys.append(i[0])
return keys
def get_values(self):
values = map(lambda data: self[data], self.get_keys())
return list(values)
import csv
file = open('//wsl$/Ubuntu/home/abd2re/data-structures/nyc_weather.csv')
csvreader = csv.reader(file)
header = []
header = next(csvreader)
data = []
for row in csvreader:
data.append(row)
hashmap = HashMap(len(data))
for elem in data:
hashmap[elem[0]] = elem[1]
print(hashmap['Jan 8'])
print(hashmap.get_keys())
print(hashmap.get_values())
print('------')
# 1.1
average = []
for idx, elem in enumerate(data):
if idx == 7:
break
average += [int(hashmap[elem[0]])]
print(sum(average)/len(average))
# 1.2
print(max(hashmap.get_values()))
# 2.1
print(hashmap['Jan 9'])
# 2.2
print(hashmap['Jan 4'])
#other
print(hashmap.arr)