generated from mwc/lab_weather
143 lines
3.9 KiB
Python
143 lines
3.9 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):
|
|
"""Counts the number of 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:
|
|
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
|
|
"""
|
|
for person in people:
|
|
if person["name"]== name:
|
|
colors = person["favorite_colors"]
|
|
return len(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")
|
|
[]
|
|
"""
|
|
like_color = []
|
|
d={}
|
|
for person in people:
|
|
if color in person["favorite_colors"]:
|
|
d = {"name": person["name"], "email": person["email"], "favorite_colors":person["favorite_colors"]}
|
|
like_color.append(d)
|
|
return like_color
|
|
|
|
|
|
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
|
|
"""
|
|
like_color2 = []
|
|
for person in people:
|
|
if color in person["favorite_colors"]:
|
|
like_color2.append(person["name"])
|
|
return len(like_color2)
|
|
|
|
|
|
from collections import Counter
|
|
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,
|
|
}
|
|
"""
|
|
|
|
|
|
all_colors= []
|
|
for person in people:
|
|
for color in person["favorite_colors"]:
|
|
all_colors.append(color) #gives a list of all colors liked including duplicates
|
|
|
|
d = Counter(all_colors)
|
|
return d
|
|
|
|
|
|
|
|
|
|
|
|
from people import friends, family
|
|
|
|
count = count_people(friends)
|
|
print("Number of freinds are", count)
|
|
|
|
email = get_email(friends, "Jelani West")
|
|
print("email is", email)
|
|
|
|
favcolor = count_favorite_colors(friends, "Yulix Reynolds")
|
|
print ("# of fav colors is", favcolor)
|
|
|
|
like_color = people_who_like_color(family, "blue")
|
|
print("People who like blue:", like_color)
|
|
|
|
count_color = count_people_who_like_color(family, "blue")
|
|
print("# who like blue:", count_color)
|
|
|
|
d=get_color_dict(friends)
|
|
print(d) |