【发布时间】:2022-01-12 13:47:51
【问题描述】:
我有一个包含这张图片中信息的字典列表:
我正在尝试进入“儿童”列表并提取文件大小、filetpye、名称和类型(未图示!)。在某些资产上,子列表是空的,所以我想跳过这些。
我有这个循环:
children_in_review_link = {}
for i in range(len(items_in_review_link)):
#pprint.pprint(items_in_review_link[i])
if items_in_review_link[i][0]['asset']['children'] != []:
review_link_children.append(items_in_review_link[i][0]['asset']['children'])
print(items_in_review_link[i][0]['asset']['children'])
for j in range(len(items_in_review_link[i][0]['asset']['children'])):
children_in_review_link = {
'child_name': items_in_review_link[i][0]['asset']['children'][j]['name'],
'child_type': items_in_review_link[i][0]['asset']['children'][j]['type'],
'child_size': items_in_review_link[i][0]['asset']['children'][j]['filesize'],
'child_filetype': items_in_review_link[i][0]['asset']['children'][j]['filetype'],
}
review_link_children.append(children_in_review_link)
pprint.pprint(review_link_children)
但我收到if items_in_review_link[i][0]['asset']['children'] != []: 行的“列表超出范围”错误
我已将pprint.pprint(items_in_review_link[i][0]) 行作为检查,它会在范围内的最后一项上返回“列表索引超出范围”错误。
我怎样才能正确地做到这一点?
【问题讨论】:
-
可能从将中间结果分配给变量开始,以避免一遍又一遍地重复相同的表达式。
-
接下来,首选
for x in list_of_things: use(x)而不是for i in range(len(list_of_things)): use(list_of_things[i])。 -
如果你也需要索引也可以这样做:
for i, x in enumerate(list_of_things): do_something
标签: python range screen-scraping