data-structures - 如何在 Lua 中创建 HashMap<Int, Int[]> 的等效项

标签 data-structures dictionary lua redis hashmap

我希望在 lua 中有一个类似于 Java HashMap 的简单数据结构。

这样做的目的是,我希望维护一个唯一的键“userID”,该键映射到一组不断更新的两个值,例如;

'77777', {254, 24992}

关于如何实现这一目标有什么建议吗?


-- Individual Aggregations
local dictionary = ?

-- Other Vars
local sumCount = 0
local sumSize = 0
local matches = redis.call(KEYS, query)

for _,key in ipairs(matches) do
    local val = redis.call(GET, key)
    local count, size = val:match(([^:]+):([^:]+))

    topUsers(string.sub(key, 11, 15), sumCount, sumSize)

    -- Global Count and Size for the Query
    sumCount = sumCount + tonumber(count)
    sumSize = sumSize + tonumber(size)
end

local result = string.format(%s:%s, sumCount, sumSize)
return result;

-- Users Total Data Aggregations
function topUsers()
  -- Do sums for each user
end

最佳答案

假设您要询问的是字典:

local dictionary = {
    ['77777'] = {254, 24992},
    ['88888'] = {253, 24991},
    ['99999'] = {252, 24990},
}

棘手的部分是键是一个字符串,无法转换为 Lua 变量名称,因此必须用 [] 包围每个键。我在 Lua 5.1 reference manual 中找不到对此规则的明确描述。 ,但是Lua wiki表示如果一个键“由下划线、字母和数字组成,但不以数字开头”,则按上述方式定义时才不需要 [],否则为方 block 括号是必需的。

关于data-structures - 如何在 Lua 中创建 HashMap<Int, Int[]> 的等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21881869/

相关文章:

android - 在 Lua for Android 中移动键盘显示上的文本字段位置

algorithm - 将一个整数数组分成两个大小相等的子数组?

python - 如何深入字典并删除最深的键级别

java - 为什么在我们有了 ArrayLists 的情况下学习 Arrays 很重要?

python - 如何在 python 中找到嵌套字典中项目的最大值?

python - 从子词典中获取列表

indexing - Lua中返回表的索引

java - 在 LuaJava 中访问常量

python - 哈希表,非空槽已包含键,奇数数据值被新数据值替换

c++ - Bst- 为什么我的 Best 在将 node* 更改为 node*& 后工作?