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

如何简洁实现Python列表元素与字典值匹配并输出对应键

更简洁的实现方式

嘿,嵌套循环确实有点冗余,咱们可以通过反转字典的方式把查询效率拉满,同时让代码更清爽!这里给你几种实用的简洁写法:

方法一:反转字典后直接索引(最推荐)

先把class_dict的键值对反转,让数字(原value)作为新字典的键,对应的类别名称(原key)作为值。这样后续遍历labels时,直接通过数字索引就能拿到结果,时间复杂度从嵌套循环的O(n*m)降到O(n),效率提升很多:

labels = [2, 7, 1, 0, 3, 2, 0, 5, 1, 6, 3, 4, 2, 9, 3, 8]
class_dict = {'airplane': 0, 'automobile': 1, 'bird': 2,'cat': 3,'deer': 4,'dog': 5,'frog': 6, 'horse': 7,'ship': 8,'truck': 9}

# 反转字典:{数字: 类别名称}
reverse_class = {val: key for key, val in class_dict.items()}

# 遍历labels直接输出对应类别
for num in labels:
    print(reverse_class[num])

方法二:列表推导式一次性生成结果

如果需要把结果先存成列表再处理,用列表推导式更紧凑:

reverse_class = {val: key for key, val in class_dict.items()}
category_list = [reverse_class[num] for num in labels]

# 可以直接打印列表,或者按行输出
print(category_list)
# 或者逐行打印
print('\n'.join(category_list))

方法三:用map函数简化(一行流)

追求极简的话,map函数可以帮你把遍历和映射合并成一行:

reverse_class = {val: key for key, val in class_dict.items()}
print('\n'.join(map(lambda x: reverse_class[x], labels)))

小提醒:处理未知数字

如果labels里可能存在class_dict中没有的数字,可以用get方法避免KeyError:

print(reverse_class.get(num, '未知类别'))  # 找不到时返回'未知类别'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 15:14:06