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



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

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)给了我一个我想与之匹配的评论。只是为了解释它的现状。

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

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

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

最新更新