Ruby中哈希的比较

Ruby中哈希的比较,ruby,Ruby,我有两个类似于下面的结构 [1 => [{'pc'=>1,'id'=>0},{'pc'=>4,'id'=>0},{'pc'=>2,'id'=>1]] 但它们不需要以完全相同的顺序包含内部数组。在这种情况下如何比较?如果顺序不重要,则应该考虑其他结构而不是数组,例如: 通过在比较之前将数组转换为集合,也可以使用集合进行比较: require 'set' a = [{:a => 2}, {:b => 3}] b = [{:b => 3},

我有两个类似于下面的结构

[1 => [{'pc'=>1,'id'=>0},{'pc'=>4,'id'=>0},{'pc'=>2,'id'=>1]]

但它们不需要以完全相同的顺序包含内部数组。在这种情况下如何比较?

如果顺序不重要,则应该考虑其他结构而不是数组,例如:

通过在比较之前将数组转换为集合,也可以使用集合进行比较:

require 'set'
a = [{:a => 2}, {:b => 3}]
b = [{:b => 3}, {:a => 2}]

sa = Set.new a
#=> #<Set: {{:a=>2}, {:b=>3}}>
sb = Set.new b
#=> #<Set: {{:b=>3}, {:a=>2}}>

a == b
#=> false
sa == sb
#=> true
require'set'
a=[{:a=>2},{:b=>3}]
b=[{:b=>3},{:a=>2}]
sa=设置新的a
#=>#2},{:b=>3}>
sb=设置新的b
#=>#3},{:a=>2}>
a==b
#=>错误
sa=某人
#=>正确

这似乎是一个简单的比较:

data = {
  1 => [{'pc'=>1,'id'=>0},{'pc'=>4,'id'=>0},{'pc'=>2,'id'=>1}],
  2 => [{'pc'=>1,'id'=>0},{'pc'=>4,'id'=>0},{'pc'=>2,'id'=>1}],
  3 => [{'pc'=>1,'id'=>0},{'pc'=>2,'id'=>1},{'pc'=>4,'id'=>0}]
}
data[1] == data[2]
#> true
data[2] == data[3]
#> false

如果两个嵌套哈希具有相同的键和顺序,我们可以编写一个递归方法来进行比较。我不确定是否有内置的方法。

考虑先将数组转换为集合,然后顺序不重要。是否需要考虑列表中的重复项?