如何将哈希值中的值转换为另一个键

Ste*_*son 0 ruby hash

我无法找到将某些值转换为另一个键的最佳方法.每个值大多数都转到下一个键,最后一个键的值需要完全删除.例如

hash1 = { a: [1, 2, 3], b: [4, 5, 6], c: [7, 8, 9] }

desired_hash = hash1.some_method

desired_hash === { a: [], b: [1, 2, 3], c: [4, 5, 6] }
Run Code Online (Sandbox Code Playgroud)

我的想法是重命名哈希键,但不确定这是否是最好的方法.

Ily*_*lya 5

hash1 = { a: [1, 2, 3], b: [4, 5, 6], c: [7, 8, 9] }
keys = hash1.keys
=> [:a, :b, :c]
values = hash1.values
=> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

keys.zip(values.unshift([])).to_h
=> {:a=>[], :b=>[1, 2, 3], :c=>[4, 5, 6]}
Run Code Online (Sandbox Code Playgroud)