2017-06-12 8 views
0

フォーマットが間違っていると申し訳ありません。 私は基本的に私のフレームワークの設定ファイルであるJSONを解析しています。 これは、それがどのように見えるかです: My JSON JSON Random Field's values多次元jsonをPythonで反復する

マイコード:

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 

I)は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

これは彼/彼女が求めていることではありません。あなたがしなければならないシンプルな「ジップ」ではありませんが、すべての組み合わせを考慮に入れてください。 – MMF

+1

@MMFああ、そうですか?それを指摘してくれてありがとう。編集されました。 –

+0

あなたの回答をありがとう、あなたの方法を試みたが、期待される結果を得ることができません。私はあなたのお手伝いをすることができます参照してください、私のクエリを更新しました。 – iamgroot