Python判断嵌套列表中是否存在'Date'字符串并解决类型报错问题
报错原因
原代码触发TypeError的核心逻辑问题:遍历嵌套列表的子元素时,列表中存在整数类型的元素,当执行'Date' in item判断时,in操作符要求右侧对象为可迭代类型,但整数不满足该要求,因此触发报错。
修复方案
根据实际需求可选择以下两种写法:
场景1:收集所有值等于Date的元素,不存在则返回空列表
遍历子元素时先判断类型为字符串,再做匹配:
output_list = [item for sublist in data for item in sublist if isinstance(item, str) and item == 'Date']
如果需要模糊匹配包含Date的字符串,把判断条件改为'Date' in item即可:
output_list = [item for sublist in data for item in sublist if isinstance(item, str) and 'Date' in item]
场景2:收集所有包含Date元素的子列表,不存在则返回空列表
直接对每个子列表做包含判断即可,该操作只会匹配列表中完全等于Date的元素,不会遍历单个元素的内部内容,不会触发整数类型报错:
output_list = [sublist for sublist in data if 'Date' in sublist]
运行后得到的结果为[['Performances', 'Date', '2021-05-07', 8247, 8252]],符合预期。
内容的提问来源于stack exchange,提问作者Aniiya0978
相关产品推荐
相关产品推荐

