Python遍历列表字典时如何输出值为1的对应变量名而非索引
问题背景
原有代码通过列表存储水果对应的值,运行后会输出值为1的元素位置索引0、2,预期输出对应变量名Apples、Bananas,两次字典改写均未达到预期:
- 第一版改写仅判断水果名是否为字典键,未校验对应值,导致输出所有水果名
- 第二版改写条件判断语法逻辑错误,无法正常运行
实现思路
注意:Python普通列表仅存储元素值,元素存入列表后和原始赋值变量无绑定关系,无法直接通过列表元素反查原变量名。用字典存储「变量名:变量值」的映射是可行方案,只需要修正遍历和判断逻辑即可。
修正后代码
Apples = 1 Oranges = 0 Bananas = 1 Grapes = 0 FruitValues = { "Apples": Apples, "Oranges": Oranges, "Bananas": Bananas, "Grapes": Grapes } # 遍历字典键值对,筛选值为1的项输出名称 for fruit_name, fruit_value in FruitValues.items(): if fruit_value == 1: print(fruit_name)
运行结果
Apples Bananas
逻辑说明
- 调用字典的
items()方法遍历,可以同时获取每个条目的键(即水果名称字符串)和对应存储的值 - 判断条件直接校验值是否等于1即可,遍历字典本身拿到的键必然存在于字典中,不需要额外做键存在性判断
- 满足值为1的条件时,直接打印对应的键,即可得到预期的变量名输出
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

