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) Dictionaries String Formatting with Dictionaries

Error: "Couldn't import string_factory"

Why do I get "I couldn't import string_factory" error here, and what does that mean?

string_factory.py
# Example:
# values = [{"name": "Michelangelo", "food": "PIZZA"}, {"name": "Garfield", "food": "lasagna"}]
# string_factory(values)
# ["Hi, I'm Michelangelo and I love to eat PIZZA!", "Hi, I'm Garfield and I love to eat lasagna!"]

template = "Hi, I'm {} and I love to eat {}!"

def string_factory(listOfDicts):
    newList = list()
    def formatTemplate(**kwargs):
        return template.format(name, food)
    for dic in listOfDicts:
        newList.append(formatTemplate(**dic))

1 Answer

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 68,441 Points

Very interesting attempt. There are three errors to correct

  • do not overwrite template to remove the format named fields. The "name" and "food" are needed to use duct unpacking as an argument to format
  • the argument to template.format() should be **kwargs to unpack the passed in dict
  • the returnstatement for newList is missing

Correcting these should pass the challenge.

Alternatively, formatTemplate(**dic) could be replaced with template.format(**dic) making the function formatTemplate unnecessary.

For styling, please review PEP-0008 for variable and function naming conventions. It's different from other languages and will make your code more readable to other Python coders.

Post back if you need more help. Good luck!!!

Thank you!