一、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進行切片即可選取指定範圍內的元素。
原創文章,作者:FUMFX,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/371287.html