forked from edooley7/dsp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathadvanced_python_dict.py
More file actions
58 lines (49 loc) · 1.8 KB
/
advanced_python_dict.py
File metadata and controls
58 lines (49 loc) · 1.8 KB
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
from collections import defaultdict
import csv
def printAnswer(qi, countElements, colName, col, iterator):
"""
Prints a markdown friendly answer
:param qi: question number
:param countElements: count of items to print
:param colName: variable name of col
:param col: collection that contains results
:param iterator: used for traversing col
:return: pass
"""
celem = min(len(col), countElements)
print "A%d. the first %d items in %s are:<br/>" % (qi, celem, colName)
try:
i = 0
while i < celem:
key, value = iterator.next()
print key, ':', value, '<br/>'
i += 1
except StopIteration:
pass
rFilename = 'faculty.csv'
faculty_dict = defaultdict(list)
professor_dict = defaultdict(list)
sorted_pairs = []
csv.register_dialect('whitespace', delimiter=',', skipinitialspace=True)
with open(rFilename) as fin:
rdr = csv.DictReader(fin, dialect='whitespace')
for row in rdr:
# keys
names = row['name'].split(' ')
lastname = names[-1]
firstname = names[0]
if(firstname[-1] == '.' and len(names) > 2): # professor uses middle name as first
firstname = names[1]
# values
deg = row['degree'].translate(None, '.')
values = [deg, row['title'], row['email']]
faculty_dict[lastname] = values
professor_dict[(firstname, lastname)] = values
sorted_keys = sorted(professor_dict, key=lambda item: item[1])
for key in sorted_keys :
value = professor_dict[key]
pair = (key, value)
sorted_pairs.append( pair )
printAnswer(6, 3, "faculty_dict", faculty_dict, faculty_dict.iteritems())
printAnswer(7, 3, "professor_dict", professor_dict, professor_dict.iteritems())
printAnswer(8, 3, "sorted_pairs", sorted_pairs, iter(sorted_pairs))