Почему индексы списка должны быть целыми числами, а не кортежем? - PullRequest
4 голосов
/ 24 января 2011

У меня есть эта простая программа:

x = {}
x[1,2] = 3
print x
print x[1,2]

Работает нормально.Первый print генерирует {(1,2):3}, а второй генерирует 3.

Но в моей "большой" программе я, похоже, делаю то же самое, но получаю ошибку list indices must be integers, not tuple.Что может означать это сообщение об ошибке и как я могу решить эту проблему?

Ответы [ 3 ]

12 голосов
/ 24 января 2011

Если вы получаете эту ошибку, то вы пытаетесь проиндексировать список, а не словарь.

Список Python, такой как [1, 2, 3], должен быть проиндексирован целочисленными значениями. Словарь, который есть в вашем примере, может быть проиндексирован с помощью более широкого диапазона различных значений.

6 голосов
/ 24 января 2011

Обратите внимание, что x={} определяет x как словарь , а не список (который может иметь любой хешируемый как ключ, и с синтаксическим сахаром, который переводит d[key1,key2] в d[(key1,key2)]).

См., Однако, numpy , который допускает многомерные массивы, если это действительно то, что вы хотите.

2 голосов
/ 24 января 2011
x = {}

Создает словарь, а не список.

x[1,2] = 3

присваивает ключу значение 1 (2, 2).

Список может быть толькоиндексируется целыми числами.Может быть, вы перепутали [] и {}, используя ваш dict?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...