如何在嵌套列表中通过指定元素获取其右侧相邻元素并赋值?
问题分析与解决方案
你的核心思路(遍历嵌套列表查找匹配项)方向是对的,但两种尝试的实现细节都存在错误,具体问题和修正方案如下:
你的代码问题点
尝试1:
index(person1)语法错误:index()是列表的实例方法,必须通过具体列表调用(比如peep_list.index(target_name));person1未定义(应该是你要搜索的目标名字);- 内层循环完全多余:每个子列表
peep_list的结构固定为[名字, 年份],不需要遍历子列表的每个元素。
尝试2:
index变量未初始化就直接使用;- 逻辑混乱:将索引值和名字字符串直接比较,且跨子列表累加索引会导致判断完全错误。
基于列表逻辑的正确实现
因为每个子列表的结构固定(第一个元素是名字,第二个是年份),直接遍历外层列表,判断子列表的第一个元素是否匹配目标名字即可,无需内层循环。
方法1:基础循环实现
total_list = [['chloe', '2018'], ['camille', '2002'], ['hannah', '1979']] target_name = input("请输入名字:") # 接收用户输入的名字 age1 = None for peep_list in total_list: if peep_list[0] == target_name: age1 = peep_list[1] break # 找到匹配项后立即退出循环,提升效率 print(f"对应的年份是:{age1}" if age1 else "未找到该名字")
方法2:列表推导式实现(更简洁的列表逻辑写法)
total_list = [['chloe', '2018'], ['camille', '2002'], ['hannah', '1979']] target_name = input("请输入名字:") # 用列表推导式筛选出所有匹配的年份 matched_years = [peep[1] for peep in total_list if peep[0] == target_name] age1 = matched_years[0] if matched_years else None print(f"对应的年份是:{age1}" if age1 else "未找到该名字")
内容的提问来源于stack exchange,提问作者toastedbred
相关产品推荐
相关产品推荐

