类型错误:格式需要映射

2024-05-17 18:53:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串和一个对象列表:

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

谢谢你


Tags: 对象no字符串inidobj列表for
2条回答

您需要将objcon转换为一个字典-您当前的代码传入一个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

由于格式化字符串使用命名参数:

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']}

相关问题 更多 >