TypeError: string indices must be integers
An Iterable is a collection of elements that can be accessed sequentially . In Python, iterable objects are indexed using numbers . When you try to access an iterable object using a string or a float as the index, an error will be returned.
All the characters of a string have a unique index . This index specifies the position of each character of the string. TypeError: string indices must be integers means an attempt to access a location within a string using an index that is not an integer. In the above case using the str[hello"] and str[2.1] as indexes. As these are not integers, a TypeError exception is raised. This means that when you're accessing an iterable object like a string or float value, you must do it using an integer value .
In the above example, instead of providing str[hello"] or str[2.1] to the string, provided an integer value str. Thus no error is encountered. Since string indices only accept integer value.
When you run the above code, you will get the output like:
Here, TypeError: string indices must be integers has been caused because you are trying to access values from dictionary using string indices instead of integer.
If you are accessing items from a dictionary , make sure that you are accessing the dictionary itself and not a key in the dictionary. The value of "i" is always a key in the dictionary . It's not a record in the dictionary. Let's try to using "i" in the dictionary example:
Slice Notation string[x:y]
Python supports slice notation for any sequential data type like lists, strings , tuples, bytes, bytearrays, and ranges. When working with strings and slice notation, it can happen that a TypeError: string indices must be integers is raised, pointing out that the indices must be integers, even if they obviously are.
A comma "," is actually enough for Python to evaluate something as a tuple. So here you need to replace the comma "," with a colon ":" to separate the two integers correctly.