From b6eb4ea7ef4bf6c96475f1ce95a7ee310702919b Mon Sep 17 00:00:00 2001 From: angelotr Date: Tue, 14 Oct 2025 00:35:15 -0400 Subject: [PATCH] I replaced all the raise NotImplementedError() lines with working code that loops through the list of dictionaries to find names, emails, and favorite colors, counts people and colors, and creates a dictionary showing how many people like each color. I got stuck at first trying to loop through the list of dictionaries to find specific information, since I it has been a while I have had accessing values inside nested structures. I got un-stuck by reviewing examples of how to use keys in dictionaries and by printing out parts of the data step by step to see how it was organized. --- friend_functions.py | 88 ++++++++++++--------------------------------- 1 file changed, 22 insertions(+), 66 deletions(-) diff --git a/friend_functions.py b/friend_functions.py index 6f5ecf7..6e604c6 100644 --- a/friend_functions.py +++ b/friend_functions.py @@ -10,83 +10,39 @@ # each and instead write code which returns the expected values. def count_people(people): - """Counts the number of people. - >>> count_people(family) - 5 - >>> count_people(friends) - 10 - """ - raise NotImplementedError() + return len(people) def get_email(people, name): - """Returns the named person's email address. If there is no such person, returns None. - - >>> get_email(family, "Tad Winters") - "ligula.aenean@hotmail.edu" - >>> get_email(friends, "Tad Winters") - None - """ - raise NotImplementedError() + + + for person in people: + if person["name"] == name: + return person["email"] + return None def count_favorite_colors(people, name): - """Returns the number of colors liked by the named person. If there is no such person, returns None. - - >>> count_favorite_colors(family, "Tad Winters") - 2 - >>> count_favorite_colors(family, "Raphael Chambers") - 1 - """ - raise NotImplementedError() + + for person in people: + if person["name"] == name: + return len(person["favorite_colors"]) + return None def people_who_like_color(people, color): - """Returns a list containing only those people who like the given color. - >>> people_who_like_color(family, "yellow") - [ - { - "name": "Walker Hurley", - "email": "auctor.odio@icloud.ca", - "favorite_colors": ["red", "yellow", "blue", "orange"], - }, - { - "name": "Clementine Joseph", - "email": "hendrerit@aol.co.uk", - "favorite_colors": ["yellow", "aqua", "black"], - } - ] - >>> people_who_like_color(family, "indigo") - [] - """ - raise NotImplementedError() + + return [person for person in people if color in person["favorite_colors"]] def count_people_who_like_color(people, color): - """Returns the number of people who like a given color. - - >>> count_people_who_like_color(family, "red") - 2 - >>> count_people_who_like_color(family, "orange") - 1 - """ - raise NotImplementedError() + + return len(people_who_like_color(people, color)) def get_color_dict(people): - """Returns a dict showing how many people like each color. - Any color liked by any of the people will be included, and only colors - liked by someone will be included. The order of items in the dict doesn't matter. - - >>> get_color_dict(family) - { - "aqua": 2, - "red": 2, - "blue": 2, - "black": 2, - "white": 1, - "grey": 1, - "yellow": 2, - "orange": 1, - } - """ - raise NotImplementedError() + + color_dict = {} + for person in people: + for color in person["favorite_colors"]: + color_dict[color] = color_dict.get(color,0) + 1 + return color_dict