转自:https://teamtreehouse.com/community/format-argument-after-must-be-a-mapping-not-list
问题:
Create a function named string_factory that accepts a list of dictionaries and a string. Return a new list build by using .format() on the string, filled in by each of the dictionaries in the list.
Here's my code: Please help!
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 items in dicts:
string.format(**dicts)
return strings
print(string_factory(dicts, string))
方案:
Here you can see 2 possible ways of doing it:
First:
def string_factory(dictionary, strings):
string_list = []
for i in range(len(dictionary)):
string_list.append(strings.format(**dictionary[i]))
return string_list
Second:
def string_factory(dictionary, strings):
string_list = []
for element in dictionary:
string_list.append(strings.format(**element))
return string_list
采纳:
def string_factory(dicts, string):
formatted = []
for data in dicts:
new_dict = data
formatted.append(string.format(**new_dict))
return formatted
print(string_factory(dicts, string))