2017-06-12 100 views
0

對不起發佈不正確的格式,希望我現在的查詢很清楚。 我正在解析一個JSON,它基本上是我的框架的配置文件。 這是它的外觀: My JSON JSON Random Field's values在Python中對多維json進行迭代

我的代碼:

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 

我想從makeCombination(所有領域的「隨機」所有可能的組合),這回runRegressionFunc() 。

P.S.我是新編碼世界:)

+0

你可以發佈你的代碼的例子嗎? - 你如何解析這些數據? –

+0

你的json有語法錯誤。 –

+0

更新我的查詢,希望現在我能夠突出顯示我的查詢 – iamgroot

回答

0

首先,你的json是不正確的。修復語法後,可以使用itertools.product獲取api_keyproject_key的所有內容組合,並根據需要創建新的字典列表。

>>> 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'}] 
+0

這不是他/她所要求的。這不是一個簡單的'zip',你需要做的,但考慮到所有組合 – MMF

+1

@MMF哦,是嗎?感謝您指出。編輯。 –

+0

感謝您的回覆,嘗試了你的方式,但無法獲得預期的結果。我已更新我的查詢,請看看您是否可以提供幫助。 – iamgroot