Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 值为数组的哈希_Arrays_Ruby_Hash - Fatal编程技术网

Arrays 值为数组的哈希

Arrays 值为数组的哈希,arrays,ruby,hash,Arrays,Ruby,Hash,想要进行这样的转换,但没有得到正确的结果 old = { 1 => %w(A E I O U L N R S T), 2 => %w(D G), 3 => %w(B C M P), 4 => %w(F H V W Y), 5 => %w(K), 8 => %w(J X), 10 => %w(Q Z) } expected = { 'a' => 1,

想要进行这样的转换,但没有得到正确的结果

 old = {
      1 => %w(A E I O U L N R S T),
      2 => %w(D G),
      3 => %w(B C M P),
      4 => %w(F H V W Y),
      5 => %w(K),
      8 => %w(J X),
      10 => %w(Q Z)
    }

expected = {
  'a' => 1, 'b' => 3, 'c' => 3, 'd' => 2, 'e' => 1,
  'f' => 4, 'g' => 2, 'h' => 4, 'i' => 1, 'j' => 8,
  'k' => 5, 'l' => 1, 'm' => 3, 'n' => 1, 'o' => 1,
  'p' => 3, 'q' => 10, 'r' => 1, 's' => 1, 't' => 1,
  'u' => 1, 'v' => 4, 'w' => 4, 'x' => 8, 'y' => 4,
  'z' => 10
}
使用嵌套循环实现我的转换。我认为当内部循环循环时,外部循环不会增加。这是我的密码:

class Etl

    def self.transform(old)

        result = {}

        old.each do |key, value|
            value.each_with_index do |v, i|
                result[v[i]] = key
            end
        end

        result

    end


end 

您不需要使用索引,只需使用
v

def self.transform(old)
    result = {}
    old.each do |key, value|
        value.each do |v|
            result[v.downcase] = key
        end
    end
    result
end
注意:用于匹配预期散列的密钥大小写


替代使用:


您不需要使用索引,只需使用
v

def self.transform(old)
    result = {}
    old.each do |key, value|
        value.each do |v|
            result[v.downcase] = key
        end
    end
    result
end
注意:用于匹配预期散列的密钥大小写


替代使用:


您可以在
之前将
排序
合并到@Stefan,谢谢您的评论。我相应地在
之前添加了
.sort
。您可以在
之前将
sort
合并到@Stefan,谢谢您的评论。我在
之前添加了
.sort
,相应地添加到了_h
。逆散列部分很有趣,但总的来说,这是一个糟糕的问题,因为下框与此无关。你应该把它们分成单独的问题。逆散列部分很有趣,但总的来说,这是一个糟糕的问题,因为降格与此无关。你应该把它们分成单独的问题。
old.flat_map { |k, v| v.map(&:downcase).product([k]) }.sort.to_h
  #=> {"a"=>1, "b"=>3, "c"=>3, "d"=>2, "e"=>1, "f"=>4, "g"=>2, "h"=>4, "i"=>1,
  #    "j"=>8, "k"=>5, "l"=>1, "m"=>3, "n"=>1, "o"=>1, "p"=>3, "q"=>10, "r"=>1,
  #    "s"=>1, "t"=>1, "u"=>1, "v"=>4, "w"=>4, "x"=>8, "y"=>4, "z"=>10}