类型错误:格式需要映射

发布于 2021-01-29 16:02:02

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

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

谢谢

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看