Skip to content

Commit 3ec88e0

Browse files
committed
PCC13 pavelekshin changes
1 parent 2acc956 commit 3ec88e0

File tree

2 files changed

+14
-16
lines changed

2 files changed

+14
-16
lines changed

13/pavelekshin/.directors.py.un~

10.5 KB
Binary file not shown.

13/pavelekshin/directors.py

+14-16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import csv
2-
from collections import defaultdict, namedtuple, OrderedDict, ChainMap
2+
from collections import defaultdict, namedtuple, OrderedDict, Counter
33
from pprint import pprint
44

55
MOVIE_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

3031
def 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-
5245
def _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

6057
def 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

Comments
 (0)