IndexError: Wskaźnik przypisania listy poza zakresem w Pythonie, co robię źle. Jestem nowicjuszem

actual_ans_dict = []
for data in prsnobj.result:
    actual_ans_dict[data[0]] = data[1]
    print actual_ans_dict
2
Amy 4 grudzień 2013, 14:00

2 odpowiedzi

Najlepsza odpowiedź

actual_ans_dict jest pustą listą. Próbujesz ustawić wartość do actual_ans_dict[data[0]], ale element z tym indeksem nie istnieje.
Możesz zmienić typ actual_ans_dict do DICT:

actual_ans_dict = {}
for data in prsnobj.result:
    actual_ans_dict[data[0]] = data[1]
    print actual_ans_dict
4
Deck 4 grudzień 2013, 10:06

Dzieje się tak, ponieważ twój actual_ans_dict jest pusty, co oznacza, że nie ma jeszcze żadnych indeksów.

actual_ans_dict = [None]*max([data[0] for data in prsnobj.result])  # not very pythonic, actualy
for data in prsnobj.result:
    actual_ans_dict[data[0]] = data[1]
    print actual_ans_dict

Daje to możliwość przypisania wartości do konkretnego indeksu. Jest nieco bardziej poprawny i krótszy sposób, aby to zrobić:

actual_ans_dict = [data[1] for data in prsnobj.result]
1
Alexander Zhukov 4 grudzień 2013, 10:05