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 (Retired) Dictionaries Membership

Atul Jha
Atul Jha
3,592 Points

not able to go through the task....but code working on workspace!

unable to figure out the error in m code

counts.py
# You can check for dictionary membership using the
# "key in dict" syntax from lists.

### Example
# my_dict = {'apples': 1, 'bananas': 2, 'coconuts': 3}
# my_list = ['apples', 'coconuts', 'grapes', 'strawberries']
# members(my_dict, my_list) => 2
output = []
def members(my_dict, my_list):
  count = 0
  for key in my_dict:
    for word in my_list:
      if word == key:
        count += 1
        output.append(word)
      else:
        continue
  print(count)
  return(count, output)

2 Answers

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 68,454 Points

You want to avoid looping over both the dict and the list as this has len(dict)*len(list) comparisons. If the dict was huge that would lead to many unnecessary comparisons. Instead, loop over the small list and do a simple check for the key:

def members(my_dict, my_list):
    count = 0
    for word in my_list:
        if word in my_dict:
            count += 1
    return count
Atul Jha
Atul Jha
3,592 Points

Thank you!..It makes a lot of sense.!

Afrid Mondal
Afrid Mondal
6,255 Points

Hi Atul, You are doing just some extra work I think. What yu have to do just return the number counts.

def members(my_dict, my_list):
  count = 0
  for key in my_dict:
    for word in my_list:
      if word == key:
        count += 1
  return count