一、List根据某个字段去重并求和
def sum_unique_values(input_list, field): unique_dict = {} for item in input_list: if item[field] not in unique_dict: unique_dict[item[field]] = item else: unique_dict[item[field]][field] += item[field] return list(unique_dict.values())
去重是list操作中最常用的一种方法,而在某些情况下,我们不仅需要去重,还要对某个字段进行求和。这时候我们可以通过创建一个以已有字段作为key的字典来实现。对于遍历到的item,如果该字段的值不在字典中,则将其以该字段为key,item为value存入字典。否则,在字典中已经存在该字段时,直接将该字段的值加上原有的值即可。最后返回所有value即可获得去重并求和的list。
二、List根据某个字段删除
def remove_duplicates(input_list, field): unique_dict = {} for item in input_list: if item[field] not in unique_dict: unique_dict[item[field]] = item return list(unique_dict.values())
和上面相似,但是我们不进行求和,而是进行删除操作。同样地,我们先创建一个以某个字段为key的字典,遍历时,只有当该字段值不在字典中,才将其存储下来。最终返回所以value,即可实现去重并删除操作。
三、List根据两个字段去重分组
def group_duplicates(input_list, field1, field2): unique_dict = {} for item in input_list: key = (item[field1], item[field2]) if key not in unique_dict: unique_dict[key] = [item] else: unique_dict[key].append(item) return list(unique_dict.values())
需要根据两个字段同时去重,可以通过将两个字段组成一个元组作为key,遍历时判断该key是否在字典中,若不存在,则将其以key为键值,以item为值存入字典。否则,在已有key中存放对应的item即可。
四、List数组根据某个字段排序选取3~5个
def sort_and_slice(input_list, field, reverse=True): sorted_list = sorted(input_list, key=lambda x: x[field], reverse=reverse) return sorted_list[2:5]
有时,我们需要根据某个字段进行排序,并选择指定数量的元素。这时,Python中的sorted函数可以使用。在该函数中,我们可以设置关键字参数key指定以该字段进行排序,reverse则表示降序还是升序排序。最后,我们将排序后的list进行切片即可选取指定范围内的元素。