利用python高效處理和排序大型商品數據集
本文演示如何將一個包含商品信息的列表高效地轉換為另一個包含商品統計信息并按特定規則排序的列表。原始數據包含商品標題、顏色、尺碼和數量,目標是統計相同標題、顏色和尺碼的商品數量,并計算每個標題下所有商品的總數量,最終結果按總數量降序排列。
示例原始數據:
data = [ ('連衣裙', '白色', 'S', 1), ('連衣裙', '白色', 'S', 1), ('連衣裙', '黑色', 'M', 1), ('褲子', '白色', 'S', 1), ]
目標輸出格式:
立即學習“Python免費學習筆記(深入)”;
result = [ ('連衣裙', '白色', 'S', 2, 3), ('連衣裙', '黑色', 'M', 1, 3), ('褲子', '白色', 'S', 1, 1), ]
其中,最后一個數字代表該標題下所有商品的總數量。為了高效處理大型數據集,我們將使用Python的collections.Counter對象進行計數。
以下代碼實現了這一功能:
from collections import Counter data = [ ('連衣裙', '白色', 'S', 1), ('連衣裙', '白色', 'S', 1), ('連衣裙', '黑色', 'M', 1), ('褲子', '白色', 'S', 1), ] # 使用Counter統計每個(標題, 顏色, 尺碼)組合的數量 item_counts = Counter(tuple(item[:-1]) for item in data) # 使用Counter統計每個標題的總數量 title_totals = Counter(item[0] for item in data) # 創建結果列表,包含標題、顏色、尺碼、數量和標題總數量 result = [ (*item, count, title_totals[item[0]]) for item, count in item_counts.items() ] # 按標題總數量降序排序,然后按標題、顏色、尺碼升序排序 result.sort(key=lambda x: (-x[4], x[0], x[1], x[2])) print(result)
這段代碼首先利用Counter高效地統計每個商品組合和每個標題的出現次數。然后,它構造一個新的列表,包含所有必要的信息,并根據總數量進行排序。這種方法充分利用了Counter的效率,能夠輕松處理包含數千條甚至更多記錄的大型數據集。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END