如何查找列表中关联值为1的变量并输出其索引位置
实现方法
核心逻辑分两步:先建立变量名和对应值的匹配关系,再遍历目标列表同时记录索引,筛出值为1的项对应的位置即可。
最推荐用字典存变量和值的映射,逻辑清晰好维护,代码如下:
# 存储变量名和对应关联值 value_map = { "Apples": 1, "Oranges": 0, "Bananas": 1, "Grapes": 0 } list1 = ["Apples", "Oranges", "Bananas", "Grapes"] # 枚举列表同时拿到索引和元素名,筛选符合条件的索引 match_index = [idx for idx, name in enumerate(list1) if value_map[name] == 1] print(match_index)
运行后输出结果为[0, 2],完全符合预期。
如果你不想重构原来散写的变量定义,也可以通过全局变量字典直接取值,但是这种写法依赖作用域,变量名对不上就容易出bug,不推荐在正式代码里用,仅做参考:
Apples = 1 Oranges = 0 Bananas = 1 Grapes = 0 list1 = ["Apples", "Oranges", "Bananas", "Grapes"] match_index = [idx for idx, name in enumerate(list1) if globals()[name] == 1] print(match_index)
小提示:
enumerate是Python内置的遍历函数,可以在遍历可迭代对象的时候同时返回当前元素的索引和元素本身,做索引匹配场景用非常方便。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

