【问题标题】:Counting elements in list计算列表中的元素
【发布时间】:2017-02-21 02:11:38
【问题描述】:

假设我有一个客户 ID 列表和他购买的商品类别:

[ [ID0 , 0], [ID1, 1], ... ]

一个顾客可以出现不止一次,也有可能他多次购买同一种物品。

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

我想构建一个列表,使得 list[0] = 客户 ID 和 list[1] = 他购买的最常见的商品类型,这意味着一个 customerID 在列表中只出现一次。

我该怎么做?

【问题讨论】:

  • 请展示你的尝试。
  • 对不起。我能想到的只是一个天真的解决方案,使用嵌套循环和计数器。但如您所知,这是非常低效的。我是 python 的新手,所以我真的不知道可以提供帮助的强大库。

标签: python list numpy


【解决方案1】:

除非我遗漏了什么,否则你不能为此目的使用字典吗? 这基本上可以确保您没有重复,并且使用 max 函数可以获得最大值。 .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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    • 1970-01-01
    • 2014-05-14
    • 2021-03-09
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多