Dictionary 在单个表中存储键值和值键字典

Dictionary 在单个表中存储键值和值键字典,dictionary,lua,key-value,lua-table,Dictionary,Lua,Key Value,Lua Table,这可以吗?例如: table = { "Mark", "John", "Paul", "Matt", "Chris", ...} 然后 for k,v in pairs(table) do table[v] = k end 或者我应该创建两个单独的表,每对一个?哪一种样式更好?对于键为整数且值与您的类似的列表式表格,使用单个表格是一个好主意,尤其是带有一点元魔力的表格,请参见 也就是说,在这种情况下,您应该使用ipairs来迭代它,而不是成对的 但是,对于类似于图的表,使用两个表更好: my

这可以吗?例如:

table = { "Mark", "John", "Paul", "Matt", "Chris", ...}
然后

for k,v in pairs(table) do table[v] = k end

或者我应该创建两个单独的表,每对一个?哪一种样式更好?

对于键为整数且值与您的类似的列表式表格,使用单个表格是一个好主意,尤其是带有一点元魔力的表格,请参见

也就是说,在这种情况下,您应该使用ipairs来迭代它,而不是成对的

但是,对于类似于图的表,使用两个表更好:

my_table = {
  foo = "bar",
  spam = "eggs",
  chunky = "bacon",
}
因为想象一下如果你有这个

my_table = {
  foo = "bar",
  bar = "baz",
}

对于一个类似列表的表,其中键是整数,值是与您类似的其他值,使用一个表是一个好主意,尤其是有点元魔力的表,请参见

也就是说,在这种情况下,您应该使用ipairs来迭代它,而不是成对的

但是,对于类似于图的表,使用两个表更好:

my_table = {
  foo = "bar",
  spam = "eggs",
  chunky = "bacon",
}
因为想象一下如果你有这个

my_table = {
  foo = "bar",
  bar = "baz",
}

在对表进行迭代时为表分配新键是危险的,因为它会导致未定义的行为。请参阅:在对表进行迭代时为表分配新键是危险的,因为它会导致未定义的行为。请参阅:一般来说,使用名为table的变量不是一个好主意。@hjpotter92您说得对!我之所以使用它是因为OP使用了它,我将编辑我的答案。感谢您的澄清。一般来说,使用名为table的变量不是一个好主意。@hjpotter92您说得对!我使用它是因为OP使用了它,我将编辑我的答案。谢谢你的澄清。