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

santosh kumar peddineni
seal-mask
.a{fill-rule:evenodd;}techdegree
santosh kumar peddineni
Python Web Development Techdegree Student 2,661 Points

my code works fine in the workspace but not in the task

can someone help me whats wrong in my covers_all code, it gives me the correct results in the workspace.

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(arg):
    subject = []
    for key, value in arg.items():
        if value & arg:
            subject.append(key)
    return subject

def covers_all(arg):
    subject = []
    for key, value in COURSES.items():
        if len(arg.intersection(value)) == len(arg):
            subject.append(key)
    return subject

1 Answer

Jeff Muday
MOD
Jeff Muday
Treehouse Moderator 28,720 Points

You were pretty close to a solution. Look at my comments which indicate where changes are needed.

As a kind suggestion, you might want to consider using slightly better names than "arg", "key", and "value" as these don't give the code reader any indication what the variable represents and contains.

I would suggest the "arg" variable would be better named "topics", and "key" be "course_name", and "value" be "course_topics". The reader of the code would easily understand your intention.

def covers(arg):
    subject = []
    for key, value in COURSES.items(): # here iterate over courses key, values
        if arg & value:
            subject.append(key)
    return subject

def covers_all(arg):
    subject = []
    for key, value in COURSES.items():
        if value.issuperset(arg): # checks if "value" is a superset of arg
            subject.append(key)
    return subject