Ruby - 转换多个数组以生成哈希

Ked*_*tna 3 ruby arrays hash

我正在尝试将3个不同的数组转换为单个Hash.

这是3个阵列

@vehicle_numbers = ["Registration Number 1", "Registration Number 2", "Registration Number 1"]
@vehicle_colors = ["red", "blue", "green"]
@allocated = [true, true, true]
Run Code Online (Sandbox Code Playgroud)

我想要实现的是

{1=> ["Registration Number 1", "red", true], 2=> ["Registration Number 2", "blue", true]}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经实现了这一点

{1=> ["Registration Number 1", "red"], 2=>["Registration Number 2", "red"]}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将已分配的密钥添加到现有哈希中,但我无法弄清楚,它有什么问题.

@lines.each do |line|
      @method_name = line.split[0]
      if @method_name == "park"
        @vehicle_numbers << @vehicle_number = line.split[1]
        @vehicle_colors << @vehicle_color = line.split[2]
        @vehicle_info["#{@vehicle_number}"] = @vehicle_color
        # puts @vehicle_info["#{@vehicle_number}"] = @vehicle_color
      end
    end
    @slots = 1.step(@vehicle_numbers.count, 1).to_a
    @vehicle_info = Hash[(@slots).zip @vehicle_info ]
    @slots.each do |slot|
      puts "Allocated slot number: #{slot}"
    end
    puts @vehicle_info
Run Code Online (Sandbox Code Playgroud)

Aru*_*hit 5

你可以在一行中完成.

@vehicle_numbers.zip(@vehicle_colors, @allocated).each.with_index(1).to_h.invert
# => {1=>["Registration Number 1", "red", true], 2=>["Registration Number 2", "blue", true], 3=>["Registration Number 1", "green", true]}
Run Code Online (Sandbox Code Playgroud)