我需要按照创建的顺序遍历Lua字典。
例如:
t = {
['some'] = 'xxx',
['random'] = 'xxx',
['data'] = 'xxx',
['in'] = 'xxx',
['table'] = 'xxx',
}
使用pair进行正常迭代会产生随机序列顺序:
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
答案 0 :(得分:2)
编辑:更改了答案,旧答案在下面以供参考
-- function definition
function addNewItem(keyTable, myTable, key, value)
table.insert(keyTable, key)
myTable[key] = value
end
要在表格中添加新对:
-- you may need to reset keyTable and myTable before using them
keyTable = { }
myTable = { }
-- to add a new item
addNewItem(keyTable, myTable, "key", "value")
然后,按照添加键的顺序进行迭代:
for _, k in ipairs(keyTable) do
print(k, myTable[k])
end
你是创建表的人(Lua称这些表而不是字典)?如果是这样,您可以尝试以下内容:
-- tmp is a secondary table
function addNew(A, B, key, value)
table.insert(A, key)
B[key] = value
end
-- then, to browse the pairs
for _,key in ipairs(table) do
print(key, B[key])
done
这个想法是你使用两个表。一个人拿着钥匙'你添加(A)和另一个(B)实际值。它们看起来像这样:
因为A以类似
的方式配对键1 - key1
2 - key2
...
然后ipairs(A)将始终按照您添加的顺序返回键。然后 使用这些键来访问数据
data = B[key1]