/ / Itération sur un json multidimensionnel en python - json, python-2.7, itération

Itération sur un json multidimensionnel dans python - json, python-2.7, itération

Désolé de poster un format incorrect, j'espère que ma requête est claire. J'analyse un JSON, qui est essentiellement un fichier de configuration pour mon framework. Voici à quoi ça ressemble: Mon JSON Valeurs du champ aléatoire JSON

Mon code:

def makeCombination():
data = schemaConfig["PostData"]
out_json = []
for v1, v2, v3, v4, v5, v6 in product(data["size"]["testing_type"]["random"], data["start_index"]["testing_type"]["random"], data["campaign_sub_type"]["testing_type"]["random"], data["campaign_type"]["testing_type"]["random"], data["api_key"]["testing_type"]["random"], data["project_id"]["testing_type"]["random"]):
out_json.append({"size": v1,"start_index": v2,"campaign_sub_type": v3,"campaign_type": v4,"api_key": v5, "project_key": v6})
return out_json


def runRegressionFunc():
randomList = makeCombination()
tempOutList = list()
for comb in randomList:
tempDoc = dict()
for funcName in comb:
(key, val) = callOtherClasses(funcName)
tempDoc[key] = val
tempOutList.append(tempDoc)

return tempOutList

Je veux obtenir toutes les combinaisons possibles "aléatoires" de tous les champs dans makeCombination () et renvoyer ceci à runRegressionFunc ().

P.S. Je suis nouveau dans le monde du codage :)

Réponses:

0 pour la réponse № 1

Tout d'abord, votre JSON était incorrect. Après avoir corrigé la syntaxe, vous pouvez utiliser itertools.product pour obtenir toutes les combinaisons du contenu de api_key et project_key et créer une nouvelle liste de dict, avec les informations que vous voulez.

>>> from itertools import product
>>> import pprint
>>>
>>> json_data = {"PostData" : {
... "api_key": {
...   "data_type": "String",
...   "testing_type": {
...     "random": [
...       "veryShortString",
...       "shortString",
...       "longString"
...       ]}},
...
...  "project_key": {
...   "data_type": "String",
...   "testing_type": {
...     "random": [
...       "veryShortString",
...       "shortString",
...       "longString"
...       ]}}}}
>>>
>>> data = json_data["PostData"]
>>> out_json = []
>>> for v1, v2 in product(data["api_key"]["testing_type"]["random"], data["project_key"]["testing_type"]["random"]):
...      out_json.append({"api_key" : v1, "project_key" : v2 })
...
>>>
>>> pprint.pprint(out_json)
[{"api_key": "veryShortString", "project_key": "veryShortString"},
{"api_key": "veryShortString", "project_key": "shortString"},
{"api_key": "veryShortString", "project_key": "longString"},
{"api_key": "shortString", "project_key": "veryShortString"},
{"api_key": "shortString", "project_key": "shortString"},
{"api_key": "shortString", "project_key": "longString"},
{"api_key": "longString", "project_key": "veryShortString"},
{"api_key": "longString", "project_key": "shortString"},
{"api_key": "longString", "project_key": "longString"}]