Python函数向列表添加元素时触发TypeError报错排查
错误原因
travel_log本身是列表类型,Python中列表仅支持整数、切片作为索引,不支持字符串作为索引直接赋值。当前代码直接对列表本身写入字符串键值对,是触发本次TypeError的核心原因。
除此之外代码还有两处逻辑问题:
- 旅行记录的存储结构是「列表嵌套字典」,单条记录是字典格式,需要先组装成符合格式的字典,再追加到列表中,不能直接给列表对象写键值对
- 字典键名需要和已有条目保持统一:已有记录使用
visits存储到访次数、cities存储到访城市,自定义的键名times_visited、Cities_visited和原有规范不一致,会导致后续数据读取异常。
修正方案
仅修改自定义函数内部的逻辑即可,上下标注禁止修改的代码块完全保留,修正后可运行代码如下:
travel_log = [ { "country": "France", "visits": 12, "cities": ["Paris", "Lille", "Dijon"] }, { "country": "Germany", "visits": 5, "cities": ["Berlin", "Hamburg", "Stuttgart"] }, ] #🚨 Do NOT change the code above def add_new_country(country, times_visited, cities_visited): new_country_entry = { "country": country, "visits": times_visited, "cities": cities_visited } travel_log.append(new_country_entry) #🚨 Do not change the code below add_new_country("Russia", 2, ["Moscow", "Saint Petersburg"]) print(travel_log)
运行上述代码后,会正常输出包含俄罗斯旅行记录的完整列表,无类型报错。
内容的提问来源于stack exchange,提问作者Omar Mohamed
相关产品推荐
相关产品推荐

