Files
lab_weather/friend_functions.py
2025-10-21 08:51:10 -04:00

137 lines
4.3 KiB
Python

# friend_functions.py
# ------------
# By MWC Contributors
#
# Each of the functions below expects a list of dictionaries as its first
# argument. Two examples of the expected input are provided in people.family
# and people.friends.
# Your job is to complete these functions. Remove the NotImplementedError from
# each and instead write code which returns the expected values.
# def count_people(people):
# """
# >>> count_people(family)
# 5
# >>> count_people(friends)
# 10
# """
# 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
# """
# for person in people:
# if (person["name"]==name): # on the left is the syntax
# # for a dict within a list lookup
# return person["email"] # dict within a list lookup
# return None # reached the end of the list without a match
# 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
# """
# for person in people:
# if (person["name"]==name): # for a dict within a list lookup
# return len(person["favorite_colors"]) # count of list elements in a dict within a list
# 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")
# []
# """
# fav_name=[] # initialize output list as None
# for person in people:
# if color in person["favorite_colors"]: # if color in the data file matches input color
# fav_name.append(person) # append output list
# return fav_name # at the end of file, output list
# 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
# """
# fav_name=[] # initialize output list as None
# for person in people:
# if color in person["favorite_colors"]: # if color in the data file matches input color
# fav_name.append(person) # append output list
# return len(fav_name) # count of names of matching 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,
}
"""
d={}
v=1
for person in people:
for color_list in person["favorite_colors"]:
if color_list in d: # if the current color is already in the list,
+v # increment by 1.
d[color_list]=d[color_list]+v # In the same key,
# replace the existing value with the incremented value.
else: # Otherwise, the current color is not in the list.
v=1 # Reset the value, since a new color must have a value of 1.
d[color_list]=v # Append a new key with the value of 1.
return(d)