文字列とオブジェクトのリストがあります。
gpl = "%(id)s : %(atr)s"
objects = [{'id':1, 'content':[{'atr':'big', 'no':2}]}, {'id':2, 'content': [{'atr':'small', 'no':3}]}]
for obj in objects:
for con in obj['content']:
print gpl %(obj,con)
私は得る:
TypeError: format requires a mapping
これをどのように印刷しますか?印刷しようとしています:
1 : big
2 : small
ありがとうございました
書式設定文字列は名前付きパラメータを使用するため、次のようになります。
gpl = "%(id)s : %(atr)s"
書式設定文字列内の名前付き書式設定キーを参照するための引数として、辞書にキー(名前)を指定する必要があります。
print gpl % {'id': obj['id'], 'atr': con['atr']}
したがって、コードは次のようになります。
for obj in objects:
for con in obj['content']:
print gpl% {'id': obj['id'], 'atr': con['atr']}
obj
とcon
を1つの辞書に変換する必要があります。現在のコードはTuple
を渡します。
その後objects
がどうなるか気にしない場合は、 dict.update を使用してください。
for obj in objects:
for con in obj["content"]:
con.update(obj)
print gpl % con
1 : big
2 : small
objects
を変更したくない場合は、中間辞書を作成する必要があります。
for obj in objects:
for con in obj["content"]:
print gpl % {'id': obj["id"], 'atr': con["atr"]}
1 : big
2 : small