J'ai essayé de travailler avec un objet JSON où j'ai essayé d'obtenir des valeurs de deux clés différentes. Ce que je veux faire est de vérifier si dans l'objet 1 contient dans l'objet 2 et a la valeur sur 0 ...

-1
ProtractorNewbie 15 mars 2021 à 11:12

1 réponse

Je ne sais pas si c'est le moyen le plus efficace, mais vous pourriez:

  • faire des dictionnaires pas des listes, faut-il que ce soit une liste?
  • permuter la valeur-clé de first_loop
  • croiser les ensembles
  • obtenir les valeurs de l'original, imprimer uniquement si> 0

[Code non testé]

first_loop = {}
second_loop = {}
total_stock = 0

for idx, sizes in json_value["attributes"].items():
    for getId in sizes["options"]:
        first_loop[getId["products"][0]] = getId["label"]
    break

for idx, test in json_value["productStockAlert"]["child"].items():
    total_stock += test["stock_number"]
    second_loop[test["productId"]] = test["stock_number"]


matching = set(first_loop.keys()).intersection(second_loop.keys())

for prod_id in matching:
   stock = second_loop.get(prod_id)
   if stock > 0:
     print(f"{first_loop.get(prod_id) ({stock})")

Enfin, vous avez une instruction break, qui ne l'exécutera qu'une seule fois ... Dans ce cas, vous n'avez pas besoin d'une boucle for ...

C'est trop spécifique au cas, mais j'espère que cela aidera ...

1
ppanero 15 mars 2021 à 08:28