Think about the next minimal instance the place a
TypeError: 'bool' object will not be subscriptable happens:
boo = True boo # or: boo[3:6]
This yields the next output:
Traceback (most up-to-date name final): File "C:UsersxcentDesktopcode.py", line 2, in <module> boo TypeError: 'bool' object will not be subscriptable
Python raises the
TypeError: 'bool' object will not be subscriptable when you use indexing or slicing with the sq. bracket notation on a Boolean variable. Nevertheless, the Boolean sort will not be indexable and you can not slice it—it’s not iterable!
In different phrases, the Boolean class doesn’t outline the
boo = True boo # Error! boo[3:6] # Error! boo[-1] # Error! boo[:] # Error!
You may repair this error by
- changing the Boolean to a string utilizing the
str()perform as a result of strings are subscriptable,
- eradicating the indexing or slicing name,
- defining a dummy
__getitem__()methodology for a customized “Boolean wrapper class”.
Technique 1: Convert Boolean to a String
If you wish to entry particular person characters of the “Boolean” strings
"False", contemplate changing the Boolean to a string utilizing the
str() built-in perform. A string is subscriptable so the error is not going to happen when making an attempt to index or slice the transformed string.
boo = True boo_string = str(boo) print(boo_string) # T print(boo_string[1:-1]) # ru
Technique 2: Put Boolean Into Checklist
A easy approach to resolve this error is to place the Boolean into a listing that’s subscriptable—that’s you need to use indexing or slicing on lists that outline the
__getitem__() magic methodology.
bools = [True, True, True, False, False, False, True, False] print(bools[-1]) # False print(bools[3:-3]) # [False, False]
Technique 3: Outline the __getitem__() Magic Technique
You can even outline your personal wrapper sort across the Boolean variable that defines a dunder methodology for
__getitem__() so that each indexing or slicing operation returns a specified worth as outlined within the dunder methodology.
class MyBool: def __init__(self, boo): self.boo = boo def __getitem__(self, index): return self.boo my_boolean = MyBool(True) print(my_boolean) # True print(my_boolean[:-1]) # True
This hack is mostly not really helpful, I included it only for comprehensibility and to show you one thing new. 😉
The error message “
TypeError: 'boolean' object will not be subscriptable” occurs when you entry a boolean
boo like a listing resembling
boo[1:4]. To unravel this error, keep away from utilizing slicing or indexing on a Boolean or use a subscriptable object resembling lists or strings.
Whereas working as a researcher in distributed programs, Dr. Christian Mayer discovered his love for instructing pc science college students.
To assist college students attain increased ranges of Python success, he based the programming schooling web site Finxter.com. He’s writer of the favored programming e-book Python One-Liners (NoStarch 2020), coauthor of the Espresso Break Python collection of self-published books, pc science fanatic, freelancer, and proprietor of one of many high 10 largest Python blogs worldwide.
His passions are writing, studying, and coding. However his biggest ardour is to serve aspiring coders by Finxter and assist them to spice up their expertise. You may be a part of his free electronic mail academy right here.