11import csv
2- from collections import defaultdict , namedtuple , OrderedDict , ChainMap
2+ from collections import defaultdict , namedtuple , OrderedDict , Counter
33from pprint import pprint
44
55MOVIE_DATA = "movie_metadata.csv"
@@ -23,17 +23,17 @@ def get_movies_by_director():
2323 score = float (row ["imdb_score" ])
2424 except ValueError :
2525 continue
26- d [director ].append (Movie (title = title , year = year , score = score ))
26+ if year > MIN_YEAR :
27+ d [director ].append (Movie (title = title , year = year , score = score ))
2728 return d
2829
2930
3031def get_average_scores (directors ):
3132 """Filter directors with < MIN_MOVIES and calculate averge score"""
3233 fd , dd = {}, {}
3334 Movie = namedtuple ("Movie" , "score movies" )
34- for k , v in directors .items ():
35- if not len (v ) < MIN_MOVIES :
36- movies = _year_sort (v )
35+ for k , movies in directors .items ():
36+ if not len (movies ) < MIN_MOVIES :
3737 score = _calc_mean (movies )
3838 fd [k ] = Movie (score = score , movies = movies )
3939 sd = OrderedDict (
@@ -42,19 +42,16 @@ def get_average_scores(directors):
4242 return sd
4343
4444
45- def _year_sort (movies ):
46- for count , movie in enumerate (movies ):
47- if not movie .year > MIN_YEAR :
48- del movies [count ]
49- return movies
50-
51-
5245def _calc_mean (movies ):
5346 """Helper method to calculate mean of list of Movie namedtuples"""
54- score = 0
55- for i in movies :
56- score += i .score
57- return round (score / len (movies ), 1 )
47+ return round (sum (i .score for i in movies ) / len (movies ), 1 )
48+
49+
50+ def most_film_directors (directors ):
51+ cnt = Counter ()
52+ for director , movies in directors .items ():
53+ cnt [director ] += len (movies [1 ])
54+ return cnt .most_common (5 )
5855
5956
6057def print_results (directors ):
@@ -84,6 +81,7 @@ def main():
8481 We wrote some tests based on our solution: test_directors.py"""
8582 directors = get_movies_by_director ()
8683 directors = get_average_scores (directors )
84+ # pprint(most_film_directors(directors))
8785 print_results (directors )
8886
8987
0 commit comments