如何判断元素是否存在于元组列表中?下述代码未返回True的原因是什么?
问题原因
in 运算符的判断逻辑是检查目标元素是否是列表的直接顶层成员,你定义的 db_content 是元组列表,每一个成员都是单元素元组,不是字符串,因此直接判断字符串是否在列表中会返回False。
你定义的列表实际结构如下:
db_content = [ ('014f2e5b80683d91dfea2c9159',), # 列表元素是元组,不是字符串 ('17675e415e05ed1100468d162d3',), ('19bc7d0146fd004bf090db94e50',) ]
解决方案
根据需求可以选择以下任意一种写法:
- 如果需要保持原列表结构不变,遍历每个元组做判断:
# any() 匹配到符合条件的元素就会返回True print(any('014f2e5b80683d91dfea2c9159' in item for item in db_content)) - 如果确定所有元组都只有1个元素,可以先把列表展开为字符串列表再判断:
str_list = [item[0] for item in db_content] print('014f2e5b80683d91dfea2c9159' in str_list) - 如果只是要匹配原列表的元组成员,直接传入完整元组做判断即可:
print(('014f2e5b80683d91dfea2c9159',) in db_content)
内容的提问来源于stack exchange,提问作者Floppy88
相关产品推荐
相关产品推荐

