2017-02-21 58 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))