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

如何在二维列表中替换指定单词的首次出现并返回对应标签?

解决首次匹配并修改二维列表的问题

嘿,我来帮你搞定这个需求!先看看你现有代码里的几个小问题:

  • 你用了list.pop(i),这会直接把整个匹配到的子列表从原列表里删掉,后面再访问list[i]肯定会出索引错误,因为列表长度已经变短了
  • 变量名用了list,这可是Python的内置类型名,最好换个别的名字比如word_list,避免覆盖内置类型导致意外问题
  • 你最后赋值的是"deletedword",但需求里是要改成"deleted"

下面是完全符合你需求的正确实现:

# 定义原始二维列表,避开内置类型名list
word_list = [['a', 'word'], ['University', 'org'], ['of', 'org'], ['Michigan', 'org'], ['Michigan', 'country']]
target_word = "Michigan"
found_tag = None

# 用enumerate同时获取索引和子列表,方便后续修改
for idx, item in enumerate(word_list):
    current_word, tag = item
    # 不区分大小写的匹配逻辑
    if current_word.lower() == target_word.lower():
        found_tag = tag
        # 直接修改当前子列表的第一个元素为"deleted"
        word_list[idx][0] = "deleted"
        break  # 找到第一个匹配项就停止遍历,保证只修改首次出现的

# 输出结果验证
print(f"首次匹配到的标签: {found_tag}")
print("修改后的列表:")
print(word_list)

运行这段代码后,你会得到完全符合预期的结果:

首次匹配到的标签: org
修改后的列表:
[['a', 'word'], ['University', 'org'], ['of', 'org'], ['deleted', 'org'], ['Michigan', 'country']]

这里的核心思路是用enumerate遍历,既能拿到每个子列表的内容,又能获取它在原列表中的索引,找到匹配项后直接修改对应位置的元素,不需要删除子列表——这样既保留了原列表的结构,又完成了修改需求,后续再遍历这个列表时,就能看到你想要的样子啦。

内容的提问来源于stack exchange,提问作者Abhay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:33:06