Current functions for the question: def reviewer_rank(db : {str:{(str,int)}}) ->
ID: 3591422 • Letter: C
Question
Current functions for the question:
def reviewer_rank(db : {str:{(str,int)}}) -> [(str,int)]:
pass
def reviewer_nested_dict(db : {str:{(str,int)}}) -> {str:{str:int}}:
pass
Explanation / Answer
#This Program is written for Python 2.7
import operator
def reviewer_rank(db):
reviewer_count_map=dict()
for movie,reviews in db.iteritems():#Iterate over db items. This is different for Python 3
for reviewer,review in reviews:
if reviewer in reviewer_count_map:
reviewer_count_map[reviewer] += 1 #For each reviewer increase the count by one if the reviewer already exists in our reviewer map
else:
reviewer_count_map[reviewer] = 1 #For each reviewer add a reviewer if he does not already exists in our reviewer map
sorted_reviewer_list = sorted(reviewer_count_map.items(), key=operator.itemgetter(0)) #Sort the reviewers count map in ascending order according to their names
sorted_reviewer_list.sort(key=operator.itemgetter(1),reverse=True) #Sort the reviewer map list (of tuples) in descending order of their number of reviews
return sorted_reviewer_list #Return the resulting list
def reviewer_nested_dict(db):
reviewer_movie_map=dict()
for movies in db:
reviewers = db[movies]
for reviewer, rating in reviewers:
if reviewer in reviewer_movie_map:
reviewer_movie_map[reviewer][movies] = rating
else:
reviewer_movie_map[reviewer] = {movies:rating}
return reviewer_movie_map
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.