TypeError: ‘bool’ 对象在 Python 中不可下标
TypeError: ‘bool’ object is not subscriptable in Python
当我们使用方括号尝试访问bool
特定索引或特定键处的对象时,会出现 Python“TypeError: ‘bool’ object is not subscriptable”。
要解决该错误,请找到为值分配布尔值的位置并更正分配。
以下是错误发生方式的 2 个示例。
主程序
my_bool = True # ⛔️ TypeError: 'bool' object is not subscriptable print(my_bool[0]) # ⛔️ TypeError: 'bool' object is not subscriptable print(my_bool['name'])
布尔对象不可订阅。换句话说,我们不能使用方括号访问特定索引处的布尔值或尝试访问布尔值的键。
追踪变量被分配布尔值的位置
您必须追踪变量在何处被分配了布尔值,并将分配更正为可下标的值,例如字符串、列表或字典。
确保您没有将可订阅值重新分配给代码中某处的布尔值。
主程序
my_list = ['a', 'b', 'c'] # 👇️ reassigned to boolean by mistake my_list = False # ⛔️ TypeError: 'bool' object is not subscriptable print(my_list[0])
我们最初将my_list
变量设置为列表,但随后将其重新分配给导致错误的布尔值。
如果该值是布尔值,您可以尝试删除方括号访问器。
如果布尔值和列表之间缺少逗号,请确保将逗号放在两个值之间。
如果您打算声明一个字典并访问一个键,请使用大括号将键值对括起来。
主程序
my_dict = {'id': 1, 'name': 'Bobby Hadz'} print(my_dict['id']) # 👉️ 1 print(my_dict['name']) # 👉️ Bobby Hadz
如果变量要存储字符串,请将其用引号引起来。
主程序
my_str = 'bobbyhadz.com' print(my_str[0]) # 👉️ b print(my_str[1]) # 👉️ o print(my_str[0:5]) # 👉️ bobby
该错误意味着我们正在使用方括号访问特定对象中的键或访问特定索引,但是该对象不支持此功能。
Python 索引是从零开始的,因此字符串中的第一个字符的索引为0
,最后一个字符的索引为-1
or len(a_string) - 1
。
# 只使用方括号访问可订阅对象
您应该只使用方括号来访问可订阅对象。
Python 中的可订阅对象是:
- 列表
- 元组
- 字典
- 细绳
必须使用list()、
tuple()、
dict()或
str()类将所有其他对象转换为可订阅对象
,以便能够使用括号表示法。
可订阅对象实现该__getitem__
方法,而非可订阅对象不实现。
主程序
a_list = [2, 4, 6, 8] # 👇️ <built-in method __getitem__ of list object at 0x7f71f3252640> print(a_list.__getitem__)
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: