基于fruit键过滤两个Python字典列表生成差异列表
找出两个字典列表中基于'fruit'键的差异
要解决这个问题,核心是先提取list2里所有fruit键的值,再筛选list1中fruit不在该集合内的字典。用集合存储fruit值能大幅提升查询效率,具体实现如下:
list1 = [ {'fruit': 'apple', 'amt': '1'}, {'fruit': 'banana', 'amt': '2'}, {'fruit': 'cherry', 'amt': '3'}, {'fruit': 'date', 'amt': '4'}, {'fruit': 'elderberry', 'amt': '5'}, ] list2 = [ {'fruit': 'date', 'amt': '6'}, {'fruit': 'elderberry', 'amt': '7'}, ] # 提取list2中所有fruit值存入集合 list2_fruit_set = {item['fruit'] for item in list2} # 列表推导式筛选list1中符合条件的项 list3 = [item for item in list1 if item['fruit'] not in list2_fruit_set] print(list3)
运行后输出:
[{'fruit': 'apple', 'amt': '1'}, {'fruit': 'banana', 'amt': '2'}, {'fruit': 'cherry', 'amt': '3'}]
补充说明
如果你的列表数据量很小,也可以直接用列表存储list2的fruit值(list2_fruits = [item['fruit'] for item in list2]),但集合的成员查询时间复杂度是O(1),比列表的O(n)更高效,数据量大时差异会很明显。
内容的提问来源于stack exchange,提问作者PinAppleRedbull
相关产品推荐
相关产品推荐

