如何将列表元素移入字典?解决'int' object is not subscriptable错误
解决'int' object is not subscriptable错误:把列表元素移入字典的正确姿势
首先得说清楚,这个错误的意思是你在代码里试图对一个整数用下标(比如xxx[0]这种写法),但整数根本不支持这种操作呀!大概率是你在处理列表和字典的时候,不小心把某个本该是列表/字典的变量当成整数来折腾了。
举个最常见的错误例子,比如你可能写了这样的代码:
my_list = [10, 20, 30] my_dict = {'a': 0, 'b': 0} # 这里犯了个错:my_dict['a']是整数0,却想用[0]来操作它 for item in my_list: my_dict['a'][0] = item
接下来给你两种常见场景的修改方案:
场景1:字典的某个键要存储整个列表的元素
如果是想把列表里的元素都加到字典某个键对应的列表里,那得先把字典的这个键初始化为空列表,而不是整数:
my_list = [10, 20, 30] my_dict = {'a': [], 'b': []} # 把值改成空列表 for item in my_list: my_dict['a'].append(item) # 直接往列表里加元素就行 print(my_dict) # 结果会是:{'a': [10, 20, 30], 'b': []}
场景2:把列表元素按顺序对应到字典的各个键
要是想让列表的第1个元素对应字典的第一个键,第2个对应第二个键,那可以这么写:
my_list = [10, 20, 30] my_dict = {'a': 0, 'b': 0, 'c': 0} # 先把字典的键转成列表,方便按索引对应 dict_keys = list(my_dict.keys()) for idx, item in enumerate(my_list): # 确保索引不超出字典键的数量,避免报错 if idx < len(dict_keys): my_dict[dict_keys[idx]] = item print(my_dict) # 结果是:{'a': 10, 'b': 20, 'c': 30}
最后给你几个排查小技巧:
- 遇到这种错误,先打印一下你用下标的那个变量的类型,比如
print(type(my_dict['a'])),看看是不是真的变成整数了 - 确认字典里要接收列表元素的键,初始值类型是对的——要存列表就别设成整数
- 循环里的变量别被意外赋值成整数,比如不小心把索引值当成了要操作的对象
内容的提问来源于stack exchange,提问作者danny30
相关产品推荐
相关产品推荐

