LUA - 表中最常见的项目

我有一个如下表,我不需要知道哪个产品卖了多少,我只想知道哪个产品最受欢迎。你知道哪种方法是最好的方法吗? 就像在下面的例子中,知道因为产品“蓝色”中的 3 个已经售出,所以它是最受欢迎的

local products = {}

products["430373bb5b7a40a04f9"] = "red"
products["0dce4263af4b5cfe0de"] = "red"
products["cf2559afb736c1eb1bc"] = "green"
products["abc4d248541c3386c88"] = "blue"
products["bb9386c65270948ebee"] = "blue"
products["b193fba741cd646a9c0"] = "blue"

最佳答案

此示例将计算单次通过的销售数量。

local products = {}

products["430373bb5b7a40a04f9"] = "red"
products["0dce4263af4b5cfe0de"] = "red"
products["cf2559afb736c1eb1bc"] = "green"
products["abc4d248541c3386c88"] = "blue"
products["bb9386c65270948ebee"] = "blue"
products["b193fba741cd646a9c0"] = "blue"

local pop = {}

for k,v in pairs(products) do
   pop[v] = (pop[v] or 0) + 1
end

-- if you need to sort by sales then: 

local pop_s = {}
for k,v in pairs(pop) do
    pop_s[#pop_s+1] = { item=k, sales=v}
end
table.sort(pop_s, function (a,b)  return a.sales>b.sales end)
for k,v in pairs(pop_s) do
   print(v.item,v.sales)
end

结果:

blue    3
red    2
green    1

https://stackoverflow.com/questions/75121895/

相关文章:

python - 查找给定范围内的数字,使给定列表中任何元素的数字的 gcd 始终为 1

python - Pandas 将 df.count() 结果的最后 n 行求和为一行

fortran - Fortran 能否在逻辑运算中强制遵守参数顺序?

c++ - 是不是 vector.at(vector.size()-1) 比 vector.back

python - 根据条件将新数据从另一个 Dataframe 添加到 Dataframe

perl - Perl 包变量什么时候超出范围?

python - 无法使用调试暂停 python 进程

r - 在 mutate 中将参数传递给 pmap

c++ - std::variant 使用整数数组中的元素作为 std::variant 中的目标类

c - 尝试复制有关可变参数的 printf 行为