<div dir="ltr"><div><div><div><div><div><div><div><div><div><div>Ciao,<br><br></div>il problema deriva dal fatto che <span style="font-family:courier new,monospace">ret</span> è una lista vuota, quindi quando cerchi di accedere al suo element <span style="font-family:courier new,monospace">ret[k]</span> viene giustamente sollevata un'eccezione <span style="font-family:courier new,monospace">IndexError</span> proprio perchè il k-esimo elemento non esiste (essendo una lista vuota).<br>
<br></div>Se ho capito bene, ret dovrà essere sempre una lista di len(self.ArrChartConfig) - 1 dizionari, che al proprio interno avranno un indice <span style="font-family:courier new,monospace">'data'</span> associato ad una lista di <span style="font-family:courier new,monospace">len(self.ArrChartData) - 1</span> liste di due elementi, allora dovresti inserire all'inizio del primo ciclo:<br>
<span style="font-family:courier new,monospace"><br>ret.append({'data': []})</span><br><br></div>per poi fare un<br><br></div><font face="courier new,monospace">ret[k]['data'].append([</font>xval, yval])<br>
<br></div><font face="arial,helvetica,sans-serif">al posto della riga che solleva l'eccezione.<br></font></div><font face="arial,helvetica,sans-serif"><br></font></div><font face="arial,helvetica,sans-serif">A mio parere questo metodo non sarebbe ottimale, sia dal punto di vista prestazionale (sia in termini di memoria che temporali) sia da quello stilistico, potresti utilizzare le list comprehension per ottenere un ottimo risultato:<br>
<br><br></font></div><font face="arial,helvetica,sans-serif"><font face="courier new,monospace">def chart(self):</font></font><br></div><div><div style="margin-left:40px"><font face="courier new,monospace">return [{'data': [[coords[0], coords[1]] for coords in self.ArrChartData[:-1]]}<br>
</font></div><div style="margin-left:40px"><div style="margin-left:40px"><font face="courier new,monospace">  for _ in xrange(0, len(</font>self.ArrChartConfig) - 1)]<br><br></div></div>nel caso l'iterable self.ArrCharData contenga solo tuple o liste da 2 elementi potresti anche scrive in questo modo<br>
</div><div><font face="arial,helvetica,sans-serif"><br></font><font face="arial,helvetica,sans-serif"><font face="courier new,monospace">def chart(self):</font></font><br><div><div style="margin-left:40px"><font face="courier new,monospace">return [{'data': [[x, y] for x, y in self.ArrChartData[:-1]]}<br>
</font></div><div style="margin-left:40px"><div style="margin-left:40px"><font face="courier new,monospace">  for _ in xrange(0, len(</font>self.ArrChartConfig) - 1)]</div></div></div><br><br></div>Spero di averti dato una mano con la risoluzione del tuo problema, fammi sapere se funziona (e nel caso di errori dove ho sbagliato) o se c'è qualche passaggio non molto chiaro.<br>
</div><div>Spero che il sonno non mi abbia giocato qualche brutto scherzo ;)<br></div><div><br></div><div>P.S. se la coppia di coordinate non dovrai modificarla in futuro,  ti consiglio di usare una tupla per contenerle quindi (val[0], val[1])<br>
</div><div><br></div><div>Saluti,<br></div><div>Federico Figus<br></div></div>