list indices must be integers or slices not tuple как исправить
[Решение] TypeError: String Indices Must be Integers в Python
В этой статье мы рассмотрим из-за чего возникает ошибка TypeError: String Indices Must be Integers и как ее исправить в Python.
Введение
В Python мы уже обсудили множество концепций и преобразований. В этом руководстве обсудим концепцию строковых индексов, которые должны быть всегда целыми числами. Как знаем в Python, доступ к итеративным объектам осуществляется с помощью числовых значений. Если мы попытаемся получить доступ к итерируемому объекту, используя строковое значение, будет возвращена ошибка. Эта ошибка будет выглядеть как TypeError: String Indices Must be Integers.
Что такое строковые индексы?
Строки — это упорядоченные последовательности символьных данных. Строковые индексы используются для доступа к отдельному символу из строки путем непосредственного использования числовых значений. Индекс строки начинается с 0, то есть первый символ строки имеет индекс 0 и так далее.
Индексы строки должны быть целыми числами
В python, когда мы видим какие-либо итерируемые объекты, они индексируются с помощью чисел. Если мы попытаемся получить доступ к итерируемому объекту с помощью строки, возвращается ошибка. Сообщение об ошибке — «TypeError: строковые индексы должны быть целыми числами».
Все символы, присутствующие в строках, имеют свой уникальный индекс. Индекс используется для указания позиции каждого символа в строке. Но все индексы должны быть целыми числами, поскольку мы не можем запомнить позицию с помощью символа, значения с плавающей запятой и так далее.
Примеры, демонстрирующие ошибку
Здесь мы обсудим все примеры, которые покажут вам ошибку в вашей программе, поскольку строковые индексы должны быть целыми числами:
Использование индексов в виде строки
В этом примере будем использовать строку в переменной line. Затем мы попытаемся получить доступ к конкретному индексу строки с помощью строкового символа в качестве индекса, а затем посмотрим результат.
Давайте посмотрим на пример для детального понимания концепции.
Использование индексов в виде числа с плавающей запятой
В этом примере мы возьмем входную строку. А затем попробуйте получить доступ к строке с помощью значения с плавающей запятой в качестве их индекса. Затем мы увидим результат.
Давайте посмотрим на пример для детального понимания концепции.
Решение для строковых индексов
Единственное решение для этого типа ошибки: «Строковые индексы должны быть целыми числами» — это передать значение индекса как целочисленное значение. Поскольку доступ к итерируемому объекту можно получить только с помощью целочисленного значения. Давайте посмотрим на пример для детального понимания концепции.
Заключение
В этом руководстве мы узнали о концепции «TypeError: строковые индексы должны быть целыми числами». Мы видели, что такое строковые индексы? Также мы увидели, почему строковые индексы должны быть целыми числами. Мы объяснили этот тип ошибки с помощью всех примеров и дали код решения для ошибки. Все ошибки подробно объясняются с помощью примеров. Вы можете использовать любую из функций по вашему выбору и вашим требованиям в программе.
Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.
Прочитайте другие статьи посвященные языку программирования Python.
Python ‘list indices must be integers, not tuple»
I have been banging my head against this for two days now. I am new to python and programming so the other examples of this type of error have not helped me to much. I am reading through the documentation for lists and tuples, but haven’t found anything that helps. Any pointer would be much appreciated. Not looking for the answer necessarily, just more resources on where to look. I am using Python 2.7.6. Thanks
This is the stack trace:
3 Answers 3
The problem is that [. ] in python has two distinct meanings
In your code you forgot the comma between the expressions for the items in the outer list:
therefore Python interpreted the start of second element as an index to be applied to the first and this is what the error message is saying.
The correct syntax for what you’re looking for is
To create list of lists, you need to separate them with commas, like this
Why does the error mention tuples?
has the exact same problem as:
which has the same problem as:
which has the same problem as:
The problem is that the __getitem__ for the list built-in class cannot deal with tuple arguments like that, only integers, and so in complains:
You could however implement __getitem__ in your own classes such that myobject[1, 2] does something sensible.
list indices must be integers or slices, not tuple #216
Comments
OwlWisdom commented Jun 30, 2019 •
#test.py
def evaluate(model, path, iou_thres, conf_thres, nms_thres, img_size, batch_size):
model.eval()
Total loss 19.913291931152344
—- ETA 0:00:00
The text was updated successfully, but these errors were encountered:
We are unable to convert the task to an issue at this time. Please try again.
The issue was successfully created but we are unable to update the comment at this time.
OwlWisdom commented Jun 30, 2019
QZ-cmd commented Mar 10, 2020
Could your problem be solved, I also encountered a similar problem
TypeError: tuple indices must be integers or slices, not tuple
githubsumanlm10 commented May 3, 2020
tw0226 commented Jul 16, 2020 •
the reason is that it doesn’t support batch images in real.
original target has 2-d list ([:, :]). but, through batch dataloader, it became [batch, [ :, :]].
So if you wanna use, detach batch dimension like using one more ‘for’.
`
for batch_i, (_, imgs, targets) in enumerate(tqdm.tqdm(dataloader, desc=»Detecting objects»)):
`
for batch_i, (_, imgs, targets) in enumerate(tqdm.tqdm(dataloader, desc=»Detecting objects»)):
`
i’m different from your source. but if you’re in trouble, at least try this.
🙂
TypeError: list indices must be integers or slices, not str
I’ve got two lists that I want to merge into a single array and finally put it in a csv file. I’m a newbie with Python arrays and I don’t understand how I can avoid this error :
5 Answers 5
First, array_length should be an integer and not a string:
Second, your for loop should be constructed using range :
Third, i will increment automatically, so delete the following line:
Note, one could also just zip the two lists given that they have the same length:
I had same error and the mistake was that I had added list and dictionary into the same list (object) and when I used to iterate over the list of dictionaries and use to hit a list (type) object then I used to get this error.
Its was a code error and made sure that I only added dictionary objects to that list and list typed object into the list, this solved my issue as well.
Follow up on Abdeali Chandanwala answer above (couldn’t comment because rep
I came across the same error while having a structure like this:
And I was trying to append the names in a list like this-
I received this error overloading a function in python where one function wrapped another:
Fix was to not overload and use unique method name.
Another fix could be to use python multipledispatch package which will let you overload and figures this out for you.
Was a bit confusing because where the error was occuring (nor message) corresponded to what cause was. I thought I had seen that python supported overloading natively but now I’ve learned it’s implementation requires more work from the user.
Вообщем, делаю игру ревёси по книжке. Консоль находит несколько ошибок. Вот они:
Traceback (most recent call last):
File «reversi.py», line 216, in
finalBoard = playGame(playerTile, computerTile)
File «reversi.py», line 189, in playGame
printScore(board, playerTile, computerTile)
File «reversi.py», line 163, in printScore
print(‘Ваш счет: %s. Счет компьютера: %s.’ % str((scores[playerTile, scores[computerTile]])))
TypeError: tuple indices must be integers or slices, not str
Помогите решить данную проблему
Помощь в написании контрольных, курсовых и дипломных работ здесь.
TypeError: list indices must be integers or slices, not str
Привет! Помогите поправить данную ошибку, пожалуйста! ошибка в 6-ой строке 1 def.
все ошибки в питоне читаемы и понятны. Что ты не смог понять в твоей? не надо в индекс совать строку.
так как кода нет, то предположу что computerTile это строка а не инт
Добавлено через 2 минуты
iSmokeJC, В ответах оставил весь код
Добавлено через 21 секунду
Welemir1, В ответах оставил весь код
Kingley82, разницу не видишь? тебе выше уже указали
КулХацкеръ, они уже и переписать не могут
У Вас не верно написано форматирование. После последнего знака % должен быть кортеж состоящий из двух объектов, а у Вас там один строковый объект. И вообще сплошная путаница.
Я со своим комментарием опоздал. Ну да ладно.
Добавлено через 8 минут
Kingley82, Такое ощущение, что Вы питон еще не очень хорошо знаете. А зачем беретесь за такие громоздкие коды? Я сомневаюсь, что Вы хорошо понимаете весь алгоритм этого кода, и что можете объяснить каждую из инструкций в нем. Польза обучения от таких примеров ноль, если Вы не понимаете как все работает.