如何用列表推导式过滤嵌套列表中包含字典元素的子列表
Python列表推导式实现方案
你可以使用内置any()函数结合列表推导式实现需求,逻辑和你现有for循环完全等价:
list2 = [sublist for sublist in list1 if not any(type(item) is dict for item in sublist)]
逻辑说明
- 外层遍历原列表
list1的每一个子列表 - 内层通过生成器表达式判断当前子列表中是否存在字典类型的元素:
any(type(item) is dict for item in sublist)只要子列表里有一个字典就返回True - 用
not对判断结果取反,只有完全不包含字典的子列表才会被保留到list2中
兼容优化建议
如果存在继承dict的自定义类需要被识别为字典类型,可以把type(item) is dict替换为isinstance(item, dict),兼容性更强。
内容的提问来源于stack exchange,提问作者Priyadarshan
相关产品推荐
相关产品推荐

