如何基于city字段对Python自定义对象列表进行去重
实现方案
你可以借助Python字典键唯一的特性完成去重,时间复杂度为O(n),效率远高于遍历比对的方案:
保留每个city首次出现的对象
city_map = {} for item in simple_list: if item.city not in city_map: city_map[item.city] = item # 得到去重后的列表 simple_list = list(city_map.values())
保留每个city最后出现的对象
如果不需要保留首次出现的对象,代码可以更简化:
# 遍历赋值会自动覆盖同key的旧值,最终保留最后出现的对象 simple_list = list({item.city: item for item in simple_list}.values())
注:Python 3.7及以上版本默认保留字典的插入顺序,最终去重列表的顺序会和原列表中city首次/末次出现的顺序一致,完全符合你给出的示例输出要求。
内容的提问来源于stack exchange,提问作者peyih
相关产品推荐
相关产品推荐

