如何在值为列表的Python字典中验证特定键存在且对应列表包含目标值
解决字典中键对应列表的存在性验证问题
嘿,我明白你遇到的问题了!你的代码之所以没输出预期结果,是因为student_dict.items()返回的是键和整个列表组成的元组,比如("student2", ["football", "basketball"]),而你用(key, value)去匹配的话,相当于拿("student2", "football")和这个元组对比,显然不相等,所以条件不成立。
要实现“键存在且对应列表包含目标值”的验证,你需要把两个条件分开判断:
基础解决方案
先检查键是否存在于字典中,再检查目标值是否在该键对应的列表里,用and把两个条件结合起来:
student_dict = { "student1": ["esports"], "student2": ["football", "basketball"], "student3": ["football"] } key = "student2" value = "football" if key in student_dict and value in student_dict[key]: print("Sport present")
这样运行后就会输出你想要的Sport present啦!
进阶优化(避免KeyError)
如果你担心键不存在时访问student_dict[key]会抛出KeyError,可以用dict.get()方法,它会在键不存在时返回None,这样更安全:
if student_dict.get(key) is not None and value in student_dict.get(key): print("Sport present")
或者更简洁的写法:
if value in student_dict.get(key, []): print("Sport present")
这里get(key, [])表示如果键不存在,就返回一个空列表,value in []自然是False,不会报错。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

