2016-11-03 185 views
0

我有一个看起来像这样的结构,其具有在它的字典:枚举使用python

{ 
"permutations": [ 
    { 
     "testname": "Test1", 
     "file_type": "file1", 
     "test_options": { 
      "rule_entities": [ 
       "name1" 
     ], 
     }, 
     ], 
     "userType": "user", 
     "rulename": "rule1", 
     "action": "alert", 
     }, 
    { 
     "testname": "Test2", 
     "file_type": "file2", 
     "test_options": { 
      "rule_entities": [ 
       "name2" 
      ], 
     }, 
     ], 
     "userType": "user", 
     "rulename": "rule2", 
     "action": "alert", 
     } 
} 

我想通过追加,使在上述结构测试名和RuleName中的变化都与rule_entities值,变量testname:“Test1_name1”和rulename:“rule1_name1”,其中name1来自rule_entities数组。因此,上述结构应该是最终的结构

{ 
"permutations": [ 
    { 
     "testname": "Test1_name1", 
     "file_type": "file1", 
     "test_options": { 
      "rule_entities": [ 
       "name1" 
     ], 
     }, 
     ], 
     "userType": "user", 
     "rulename": "rule1_name1", 
     "action": "alert", 
     }, 
    { 
     "testname": "Test2_name2", 
     "file_type": "file2", 
     "test_options": { 
      "rule_entities": [ 
       "name2" 
      ], 
     }, 
     ], 
     "userType": "user", 
     "rulename": "rule2_name2", 
     "action": "alert", 
     } 
} 

我使用下面的代码给它一个尝试snipet

for index, d in enumerate['permutations']: 
    testname = d['permutations'][index]['testname'] 
    testname_new = testname + '_' + rule_entitities 


for index, d in enumerate['permutations']: 
    rulename = d['permutations'][index]['rulename'] 
    rulename_new = rulename + '_' + rule_entities 

我没有得到期望的输出。提前致谢!!

+0

我喂你的JSON到http:// codebeautify .org/jsonviewer并被抱怨说它不是有效的JSON –

回答

1

你永远不更新存储在字典

for index, d in enumerate['permutations']: 
    testname = d['permutations'][index]['testname'] 
    testname_new = testname + '_' + rule_entities 
    d['permutations'][index]['testname'] = testname_new 


for index, d in enumerate['permutations']: 
    rulename = d['permutations'][index]['rulename'] 
    rulename_new = rulename + '_' + rule_entities 
    d['permutations'][index]['rulename'] = rulename_new 
0

我得到它的工作使用下面的代码值:

for x in 'permutations': 
    rule_entity_slash = ['permutations'][0]['test_options']['rule_entities'][0] 
    rule_entity_underscore = rule_entity_slash.replace("/","_") 
    x['testname'] = x['testname'] + '_' + rule_entity_underscore 
    x['rulename'] = x['rulename'] + '_' + rule_entity_underscore 

感谢