如何删除字典列表中所有匹配指定结构的字典元素?
解决方案
Python原生支持字典的相等性判断,直接通过列表推导式过滤符合冗余特征的元素即可,代码实现简洁高效:
# 原始数据列表 origin_data = [ {'date': '', 'obsolete': False}, {'date': '2021-01-02', 'obsolete': True, 'sku': '100940478', 'warehouse_location': 'lagos', 'quantity': '23'}, {'date': '', 'obsolete': False}, {'date': '2020-11-09', 'obsolete': False, 'sku': '100940479', 'warehouse_location': 'lagos', 'quantity': '84'}, {'date': '', 'obsolete': False}, {'date': '2021-01-15', 'obsolete': True, 'sku': '100940480', 'warehouse_location': 'oyo', 'quantity': '11'} ] # 执行过滤,仅保留不匹配冗余结构的元素 filtered_data = [item for item in origin_data if item != {'date': '', 'obsolete': False}]
过滤后输出结果
[ {'date': '2021-01-02', 'obsolete': True, 'sku': '100940478', 'warehouse_location': 'lagos', 'quantity': '23'}, {'date': '2020-11-09', 'obsolete': False, 'sku': '100940479', 'warehouse_location': 'lagos', 'quantity': '84'}, {'date': '2021-01-15', 'obsolete': True, 'sku': '100940480', 'warehouse_location': 'oyo', 'quantity': '11'} ]
如果后续需要调整冗余元素的判断规则,也可以单独校验字段值,写法更灵活:
filtered_data = [ item for item in origin_data if not (item.get('date', '') == '' and item.get('obsolete', True) is False) ]
内容的提问来源于stack exchange,提问作者chuky pedro
相关产品推荐
相关产品推荐

