I have a string and a list of objects:
gpl = \"%(id)s : %(atr)s\"
objects = [{\'id\':1, \'content\':[{\'atr\':\'big\', \'no\':2}]}, {\'id\':2, \'content\':
Since your formatting string uses named parameters:
gpl = "%(id)s : %(atr)s"
You need to provide keys (the names) in a dictionary as an argument to reference back to named formatting keys in the formatting string:
print gpl % {'id': obj['id'], 'atr': con['atr']}
So your code would be:
for obj in objects:
for con in obj['content']:
print gpl% {'id': obj['id'], 'atr': con['atr']}
You need to turn obj
and con
into one dictionary - your current code passes in a tuple
.
If you don't care what happens to objects
afterwards, use dict.update:
for obj in objects:
for con in obj["content"]:
con.update(obj)
print gpl % con
1 : big
2 : small
If you don't want objects
modified, you'll need to build an intermediate dictionary:
for obj in objects:
for con in obj["content"]:
print gpl % {'id': obj["id"], 'atr': con["atr"]}
1 : big
2 : small