如何用列表推导式在Python中过滤active=True的元组列表元素
正确的列表推导式实现方法
你的错误原因是:列表中的每个item是元组(格式为(字符串, 字典)),并非带有active属性的类实例。直接使用item.active会试图访问元组第一个元素(字符串)的属性,自然触发AttributeError。
正确写法
直接通过元组索引取到字典,再判断字典中'active'键的值:
# 完整判断写法 filtered_list = [item for item in original_list if item[1]['active'] is True] # 简化写法(因active本身是布尔值,可直接判断) filtered_list = [item for item in original_list if item[1]['active']]
示例验证
假设原列表定义为:
original_list = [('1',{'a':'A','b':'B', 'active':True, 'c': 'C'}),('2',{'a':'A','b':'B', 'active':False, 'c': 'C'})]
运行推导式后,filtered_list的结果为:
[('1', {'a': 'A', 'b': 'B', 'active': True, 'c': 'C'})]
内容的提问来源于stack exchange,提问作者anagnam
相关产品推荐
相关产品推荐

