有没有一种方法可以按创建的顺序迭代遍历lua字典?

我需要按创建顺序迭代 Lua 字典。

例如:

t = {
['some'] = 'xxx',
['random'] = 'xxx',
['data'] = 'xxx',
['in'] = 'xxx',
['table'] = 'xxx',
}

使用 pairs() 进行普通迭代会给出随机顺序:

for key, val in pairs(t) do
   print(key.." : "..val)
end

random : xxx
some : xxx
data : xxx
table : xxx
in : xxx

我需要:

some : xxx
random : xxx
data : xxx
in : xxx
table : xxx
点赞
用户2500758
用户2500758

函数定义:

function addNewItem(keyTable, myTable, key, value)
    table.insert(keyTable, key)
    myTable[key] = value
end

将新键值对添加到表格中:

需要在使用它们之前重置 keyTable 和 myTable。
keyTable = {}
myTable = {}

-- 添加新项
addNewItem(keyTable, myTable, "key", "value")

然后,按添加顺序遍历键值对:

for _, k in ipairs(keyTable) do
    print(k, myTable[k])
end

旧回答

你是在创建表格吗(Lua 将其称为表格而不是字典)?如果是这样,您可以尝试类似以下的代码:

-- tmp 是一个次要表格
function addNew(A, B, key, value)
  table.insert(A, key)
  B[key] = value
end

-- 然后,遍历键值对
for _,key in ipairs(table) do
  print(key, B[key])
done

这个想法是使用两个表格。一个保存您添加的"键"(A),另一个(B)保存实际值。它们看起来像这样:

由于 A 按以下方式组合键:

1 - key1
2 - key2
...

那么 ipairs(A) 将始终以您添加它们的顺序返回键。接下来,使用这些键来访问数据

data = B[key1]
2015-09-08 07:50:15