繁体   English   中英

如何在带有 if 语句的枚举 for 循环中使用索引(python)

[英]How to use the index in an enumerate for loop with if statement (python)

我有一个嵌套字典,其中可以访问这样的值:

print(list['sublist'][0]['item'][0]['commentId'])

但是,如果我创建一个 for 循环并想使用这样的索引,它会给我一个 keyerror:

    for index,sublist in enumerate(list['sublist']):
        if sublist[index]['item'][0]['commentId'] == commentid:
            number = sublist[index]['item'][0]['positionId']
            username = sublist[index]['subListCreator']
    print(number)
    print(username)

错误:

, in send_async_notification
    if sublist[index]['item'][0]['commentId'] == commentid:
  File "/Users/ ...... /venv/lib/python3.8/site-packages/mongoengine/base/document.py", line 263, in __getitem__
    raise KeyError(name)

本练习的全部目标是根据更深的嵌套 commentId 在嵌套数组中获取两个特定值。 如果有匹配,我想知道它下面的 positionId 和 subListCreator。 一个项目只能有一个commentId,因此代码中的[0]。

也可以只使用与commentId 匹配的整个字典“分支”,这也可以使事情正常进行。

顺便说一句, print(commentid)给了我想要匹配的 commentid。 只是为了解释它的现在。

希望这里有一个解决方案,想知道为什么它不起作用。 期待任何答案!

感谢 Mathias 的评论:双 for 循环解决了我的问题:

    for sublist in list['sublist']:
        for item in sublist['item']:
            if item['commentId'] == commentid:
                number = item['positionId']
                username = sublist['subListCreator']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM