





As a Python programmer, you may have encountered the “TypeError: list indices must be integers or slices, not str” error message. This error occurs when you try to access a list using a string as an index instead of an integer. In this article, I will explain what causes this error and how to fix it.
What Causes the Python TypeError: list indices must be integers or slices, not str?
The Python “TypeError: list indices must be integers or slices, not str” error message occurs when you try to access a list using a string as an index.
For example, the following code will raise this error:

In this example, I am trying to access the list element at the index ‘first,’ but since ‘first’ is a string, Python raises a TypeError. This is because lists in Python can only be accessed using integers or slices, not strings.
How to Fix TypeError: list indices must be integers or slices, not str?
There are a few ways to fix the “TypeError: list indices must be integers or slices, not str” error, depending on what you’re trying to do.
Method 1: Use an Integer
The most straightforward way to fix this error is to use an integer as an index instead of a string. For example, the following code will not raise an error:

In this example, I am accessing the second element of the list (index 1) using an integer, and Python will not raise an error.
Method 2: Use a Dictionary
You can use a dictionary if you want to use a string as an index and avoid this error.

In this example, I am using a dictionary to store the value of fruits against the key ‘first.’ I can access the value of fruits by just calling the key ‘first,’ and it won’t raise an error.
Related: How to fix Python TypeError: object of type ‘NoneType’ has no len()
Conclusion
The “TypeError: list indices must be integers or slices, not str” error occurs when you try to access a list using a string as an index. To fix this error, you can use an integer as an index. You can use a dictionary if you want to use a string as an index and avoid this error.
Always use integers or slices to access list elements, not strings.
Frequently Asked Questions
Can I use a float as an index for a list?
No, you cannot use a float as an index for a list. Lists can only be accessed using integers or slices, not floats. If you try to use a float as an index, you will get a TypeError.
Is it possible to use a string as an index for a list?
No, using a string as an index for a list is impossible. Lists can only be accessed using integers or slices, not strings. If you try to use a string as an index, you will get a TypeError.
Can I use negative numbers as indices for a list?
Yes, you can use negative numbers as indices for a list. In Python, negative indices are used to access elements from the end of the list. For example, the index -1 will return the last element of the list, -2 will return the second last element, and so on.
What should I do if I need to access a list using a string?
If you need to access a list using a string, you can use a dictionary and store your list against a key, and you can access your list by calling the key.
Can I use a slice as an index for a list?
Yes, you can use a slice as an index for a list. A slice can access a portion of a specified list using the colon (:) operator. For example, fruits[1:3] will return a new list containing the elements at index 1 and 2 of the original list.