• 1000 1003 *
result_box_lst = [{
"coordinates": box['boundingPoly']['normalizedVertices'],
"product": [{
"product_name" : product["product"]["name"],
"product_uri" : product["product"]["img_uri"],
"price" : product["product"]["product_price"],
###################### problematic area #############################################
"product_label1": product["product"]["productLabels"][1]["value"],
"product_label2": product["product"]["productLabels"][2]["value"],
"product_label3": product["product"]["productLabels"][3]["value"],
######################################################################################
"score" : product["score"]
} for product in box['results'] if product["score"] > 0.25]
} for box in grouped_results]
Здесь проблема в том, что иногда product["product"]["productLables"]
не имеет нескольких элементов в списке, поэтому понимание списка вылетает с исключением IndexOutofRange
. Итак, я подумал о том, чтобы поймать это с помощью try and except и погуглил, но, увы, в списках не может быть try/except
внутри.
Таким образом, я начал кодировать в основном c способе для l oop и застрял, задаваясь вопросом, как я могу создать такую же структуру сложного словаря / списка, используя базовую c форму для l oop. Пока что я построил это:
result_box_lst = []
product = []
for box in grouped_results:
for product in box['results']:
if product["score"] > 0.25:
try:
products.append({
"product_name": product["product"]["name"],
"product_uri" : product["product"]["img_uri"],
"price" : product["product"]["product_price"],
"product_label1": product["product"]["productLabels"][1]["value"],
"product_label2": product["product"]["productLabels"][2]["value"],
"product_label3": product["product"]["productLabels"][3]["value"],
"score" : product["score"]
})
except:
pass
Однако я совершенно уверен, что это никогда не достигнет того, что я sh. Есть ли способ сделать такой сложный словарь / список с этим для l oop?