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

David Kan
David Kan
4,058 Points

Create a function named string_factory that accepts a list of dictionaries and a string.

dicts = [
    {'name': 'Michelangelo',
     'food': 'PIZZA'},
    {'name': 'Garfield',
     'food': 'lasanga'},
    {'name': 'Walter',
     'food': 'pancakes'},
    {'name': 'Galactus',
     'food': 'worlds'}
]

string = "Hi, I'm {name} and I love to eat {food}!"

def string_factory(dicts,string):
  strings = []
  for item in dicts:
    string.format(**dicts)
    strings.append(string)
  return strings

I watched the video am following it with the **, but the output will not come out correctly..

Kenneth Love
Kenneth Love
Treehouse Guest Teacher

Your code is fine with one small exception.

Calling str.format() doesn't change the string, it makes a new string, so you need it to be assigned to a variable (or just put that straight into strings.append()).

1 Answer

David Bouchare
David Bouchare
9,224 Points

Hi David,

I actually asked the same question about a month ago as I was completely stuck. Tried to solve it this morning and was still stuck actually, had to look at the answer again :).

First of all it would be great if you could indent and format the code using the Markdown Cheatsheet below so that the code is readable.

Potential solution:

def string_factory(dicts, string):
    strings = []
    for items in dicts:
        strings.append(string.format(**items))
    return strings

I think that should work.