如何依据另一元组列表的键移除元组列表中的键值对?
移除目标元组列表中指定键对应的项
给定两个元组列表,需要从目标列表list_tuple里移除所有键存在于list_tuple_keys中的元组,最终得到示例中的结果。
实现代码
先提取需要移除的键到集合中(集合查询效率更高),再通过列表推导式过滤目标列表:
list_tuple = [('NHR', 153.065), ('BHS', 153.179), ('KMH', 153.393), ('DRR', 287.987), ('SSW', 487.294), ('EOF', 546.972), ('LHM', 687.54)] list_tuple_keys = [('DRR', 'Error time'), ('EOF', 'Error time'), ('LHM', 'Error time'), ('SSW', 'Error time')] # 提取要移除的键集合 keys_to_remove = {key for key, _ in list_tuple_keys} # 过滤目标列表 filtered_list = [item for item in list_tuple if item[0] not in keys_to_remove] print(filtered_list) # 输出: [('NHR', 153.065), ('BHS', 153.179), ('KMH', 153.393)]
说明
- 用集合存储要移除的键,是因为集合的成员查询操作时间复杂度为O(1),相比列表的O(n),在数据量较大时能显著提升效率。
- 列表推导式简洁高效,直接遍历目标列表并保留不在移除键集合中的项。
内容的提问来源于stack exchange,提问作者Vladimir Kharchenko
相关产品推荐
相关产品推荐

