Python列表,新手疑问

我的代码是图片里的,

运行结果是这样

但要求是这样,请问怎么改

 

你在第二循环里面用for k,v in d.items():可以获取键值对,判断k是否等于replay,然后对这个值执行遍历输出

posts = {}
print('论坛帖子')
print('=' * 30)
posts = [{'id': 1,
          'title': '测试标题1',
          'author': '匿名用户1',
          'publish': '2018-01-01',
          'content': '这里是帖子的测试内容1……',
          'replay': [{'publish': '2018-01-06', 'content': '这里是回复内容1……'},
                     {'publish': '2018-01-05', 'content': '这里是回复内容2……'}]},
         {'id': 2,
          'title': '测试标题2',
          'author': '匿名用户3',
          'publish': '2018-02-11',
          'content': '这里是帖子的测试内容2……',
          'replay': [{'publish': '2018-02-15', 'content': '这里是回复内容3……'},
                     {'publish': '2018-01-12', 'content': '这里是回复内容4……'}]}, ]

for d in posts:
    for k, v in d.items():
        if k != 'replay' and k != 'content':
            print(k + ":" + str(v))

        elif k == 'content':
            print('-' * 30)
            print(v)
        else:
            for i in v:
                print(f'回复<{i["publish"]}:{i["content"]}>')

    print('-' * 30)

如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢

posts = {}
print('论坛帖子')
print('='*30)
posts = [{'id':1,
          'title':'测试标题1',
          'author':'匿名用户1',
          'publish':'2018-01-01',
          'content':'这里是帖子的测试内容1……',
          'replay':[{'publish':'2018-01-06', 'content':'这里是回复内容1……'},{'publish':'2018-01-05', 'content':'这里是回复内容2……'}]},
         {'id':2,
          'title':'测试标题2',
          'author':'匿名用户3',
          'publish':'2018-02-11',
          'content':'这里是帖子的测试内容2……',
          'replay':[{'publish':'2018-02-15', 'content':'这里是回复内容3……'},{'publish':'2018-01-12', 'content':'这里是回复内容4……'}]},]

for d in posts:
    for dd in d:
        print(dd + ":" + str(d[dd]))

    print('-'*30)

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632