You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在嵌套列表中通过指定元素获取其右侧相邻元素并赋值?

问题分析与解决方案

你的核心思路(遍历嵌套列表查找匹配项)方向是对的,但两种尝试的实现细节都存在错误,具体问题和修正方案如下:

你的代码问题点

  • 尝试1:

    1. index(person1)语法错误:index()是列表的实例方法,必须通过具体列表调用(比如peep_list.index(target_name));
    2. person1未定义(应该是你要搜索的目标名字);
    3. 内层循环完全多余:每个子列表peep_list的结构固定为[名字, 年份],不需要遍历子列表的每个元素。
  • 尝试2:

    1. index变量未初始化就直接使用;
    2. 逻辑混乱:将索引值和名字字符串直接比较,且跨子列表累加索引会导致判断完全错误。

基于列表逻辑的正确实现

因为每个子列表的结构固定(第一个元素是名字,第二个是年份),直接遍历外层列表,判断子列表的第一个元素是否匹配目标名字即可,无需内层循环。

方法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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:07:39