判断指定值存在于Python字典values中时为何未打印True
问题原因
score_dict.values()返回的是字典所有值组成的可迭代对象,你这个字典的每个值本身是列表类型,整体结构大概是[['Far above average', ...], ['Somewhat above average', ...], ...]。'Far above average' in score_dict.values()的逻辑是判断「这个字符串是否等于字典的某一个值(也就是某一个完整的描述列表)」,显然不成立,所以不会打印True。
正确写法
你需要先遍历所有值对应的列表,判断字符串是否存在于任意一个列表内,两种常用实现方式:
- 写法1:用
any()迭代判断,不需要额外存储所有元素,性能更高
if any('Far above average' in value_list for value_list in score_dict.values()): print("True")
- 写法2:先把所有描述项合并成一个大列表再判断,适合需要多次复用所有描述项的场景
all_desc = [item for value_list in score_dict.values() for item in value_list] if 'Far above average' in all_desc: print("True")
内容的提问来源于stack exchange,提问作者justanewb
相关产品推荐
相关产品推荐

