Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Python Collections (2016, retired 2019) Sets Set Math

Omar Farag
Omar Farag
4,573 Points

Not finding the sets

Any help as to why this doesn't pass?

sets.py
COURSES = {
    "Python Basics": {"Python", "functions", "variables",
                      "booleans", "integers", "floats",
                      "arrays", "strings", "exceptions",
                      "conditions", "input", "loops"},
    "Java Basics": {"Java", "strings", "variables",
                    "input", "exceptions", "integers",
                    "booleans", "loops"},
    "PHP Basics": {"PHP", "variables", "conditions",
                   "integers", "floats", "strings",
                   "booleans", "HTML"},
    "Ruby Basics": {"Ruby", "strings", "floats",
                    "integers", "conditions",
                    "functions", "input"}
}

def covers(idk):
    courses = []
    for course in COURSES:
        if course.intersection(idk) == True:
            courses.extend(course)
    return courses

1 Answer

You aren't iterating over a dictionary with a for loop correctly.

And intersection doesn't return a boolean value. You'll want to check the size of the result instead.

Finally, don't use .extend() unless you want to add each of the individual elements of the string to the array. Use .append() instead.

def covers(idk):
    courseResult = []

    for key, value in COURSES.items():
        if (len(value.intersection(idk)) > 0):
            courseResult.append(key)
    return courseResult
Omar Farag
Omar Farag
4,573 Points

An intersection CAN return a boolean value. I'm not checking for the value of the intersection, I'm checking if there is a value in the first place. As for everything else, thank you, I passed the challenge.