2017-02-21 77 views
-2

比方說,我有客戶ID列表和項目的類別,他買:計數元素

[ID 0,0],[ID1,1],...]

顧客可能會出現多次,也有可能他不止一次購買同一類型的商品。

例如,有可能我們的列表中有[ID0,1],[ID0,2],[ID0,1],[ID1,1] ...。

我想構造一個列表,以便list [0] = customer ID和list [1] =他購買的最常見的項目類型,這意味着customerID只在列表中出現一次。

我該怎麼做?

+0

請給出您的嘗試。 – Julien

+0

對不起。我所能想到的只是一個天真的解決方案,使用嵌套的循環和計數器。但如你所知,這是非常低效的。我是Python新手,所以我不知道哪些功能強大的庫可以提供幫助。 –

回答

0

除非我遺漏了一些東西,否則你不能用字典來達到這個目的嗎? 這基本上可以確保你沒有重複,並使用最大功能,你可以得到最大值。 .get()方法確保如果找不到密鑰就會得到None。

當然,如果需要,您可以將字典格式化爲列表。

data = [ 
     ['ID0', 1], ['ID0', 2], ['ID0', 1], ['ID1', 1], 
     ['ID2', 5], ['ID5', 6] 
] 

dict = {} 
for item in data: 
    customer_id = item[0] 
    current_quantity = item[1] 
    #find maximum amount of what's already in dictionary vs current 
    dict[customer_id] = max(current_quantity, dict.get(customer_id))