Python如何过滤字典,实现条件匹配替代if elif多分支逻辑?
实现方法
你给定的data字典中name、age、gender三个列表的索引是一一对应的,找到选中姓名在name列表中的索引,再用该索引从另外两个列表取值即可。
基础实现(适配无重名场景,和原有if逻辑效果一致)
name_selected = "Jason" data = {"name": ["John", "Jason"], "age": [10, 20], "gender": ["Male", "Male"]} if name_selected in data["name"]: # 获取匹配姓名的索引 match_idx = data["name"].index(name_selected) age = data["age"][match_idx] gender = data["gender"][match_idx] print(age, gender) else: print(f"未找到姓名为{name_selected}的记录")
运行上述代码会输出20 Male。
兼容重名场景的实现
如果存在多个同姓名的记录,index()方法只会返回第一个匹配项的索引,要获取所有匹配项可以遍历索引筛选:
name_selected = "Jason" data = {"name": ["John", "Jason"], "age": [10, 20], "gender": ["Male", "Male"]} matched = [] for idx, name in enumerate(data["name"]): if name == name_selected: matched.append({ "age": data["age"][idx], "gender": data["gender"][idx] }) # 输出所有匹配结果 for item in matched: print(item["age"], item["gender"])
内容的提问来源于stack exchange,提问作者Shantanu
相关产品推荐
相关产品推荐

