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

Python中如何根据字典对应值转换列表元素

问题原因

你的列表推导式完全写错了语法顺序,这是触发NameError的直接原因。
Python列表推导式的固定结构是:
[最终要存入列表的元素值 for 临时迭代变量 in 你要遍历的可迭代对象]
你之前的两种写法都把三个部分的顺序、含义搞混了,在临时迭代变量color还没被定义的时候就提前用它去字典里取值,Python自然识别不到这个变量。

正确实现代码

直接运行下面的代码就能得到你要的结果:

colors = ['Red', 'White', 'Green', 'Red']
color_dict = {'Red': 0, 'White': 1, 'Green': 2}
converted_colors = [color_dict[color] for color in colors]

执行后converted_colors的值就是你预期的[0, 1, 2, 0]。

写法说明
  • 遍历的可迭代对象是你存原始颜色字符串的colors列表,所以for后面的迭代部分写for color in colors,这里的color是每次循环从colors里拿到的单个颜色字符串,比如第一次循环是'Red',第二次是'White'。
  • 每次循环要存入新列表的不是color本身,而是color在字典里对应的映射值,所以元素表达式的位置写color_dict[color]。
额外注意

如果后续你的原始colors列表里可能出现color_dict中不存在的键,上面的写法会抛出KeyError,可以用字典的get方法设置默认值避免报错,比如:

# 不存在的颜色默认映射为-1,可按需修改默认值
converted_colors = [color_dict.get(color, -1) for color in colors]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:21:29