TypeError: los índices de lista deben ser enteros, no dictados

Mi aspecto de archivo json tiene este aspecto y estoy intentando acceder al elemento syslog en un bucle for.

 { "cleanup":{ "folderpath":"/home/FBML7HR/logs", "logfilename":"" }, "preparation":{ "configuration":{ "src_configfile":"src.cfg", "dest_configfile":"/var/home/FBML7HR/etc/vxn.cfg" }, "executable_info1":[ { "login_info":{ "hostname":"10.4.0.xxx", "username":"***", "password":"***" } }, { "command":{ "folderpath":"/var/home/FBML7HR/SrcCode/vxnservers/fdchost/north/test/hostsim/", "processname":"northhostsim", "parameters":"-d" } } ], "executable_info2":[ { "login_info":{ "hostname":"10.4.0.xxx", "username":"***", "password":"***" } }, { "command":{ "folderpath":"/var/home/FBML7HR/SrcCode/vxnservers/fdchost/north/build/Linux-2.6.18-194.8.1.el5/bin", "processname":"northhost", "parameters":"-s brazil -d" } } ], "executable_info3":[ { "login_info":{ "hostname":"10.4.0.xxx", "username":"***", "password":"***" } }, { "command":{ "folderpath":"cd /var/home/xxx/SrcCode/vxnservers/fdchost/north/test/vxnclient_mt", "processname":"vxnclient_north_mt", "parameters":"0 320 205 14897 16880 60000 60000 2 2" } } ] }, "execution":[ { "test_case":{ "scriptname":"/var/home/FBML7HR/test/testcase1.sh", "testreport":{ "syslog":"/var/log/messages", "backupsyslog":"backuplogs1.txt", "clientsimlog":"/var/home/FBML7HR/test/out.log", "backupclientsimlog":"Clientlogs1.txt" } } }, { "test_case":{ "scriptname":"/var/home/FBML7HR/test/testcase2.sh", "testreport":{ "syslog":"/var/log/messages", "backupsyslog":"backuplogs2.txt", "clientsimlog":"/var/home/FBML7HR/test/out.log", "backupclientsimlog":"Clientlogs2.txt" } } } ], "verification":{ "testreport":{ "syslog":"/var/log/messages", "backupsyslog":"backuplogs.txt", "reportfilename":"/var/home/FBML7HR/test/out.log", "backuplogfile":"Clientlogs.txt" } } } 

Lo hago así:

 for i in data['execution']: cmd = data['execution'][i]['test_case']['scriptname'] 

Pero recibo el error que dice “TypeError: los índices de lista deben ser enteros, no dict”. Soy nuevo en python (y json también). ¿Alguien podría sugerir dónde me voy mal?

Está repasando los valores en la lista a la que hacen referencia los data['execution'] , no índices.

Solo usa esos valores (diccionarios) directamente :

 for i in data['execution']: cmd = i['test_case']['scriptname'] 

Probablemente quieras darle un nombre de bucle más significativo:

 for entry in data['execution']: cmd = entry['test_case']['scriptname']