将哈希转换为散列数组保留?

时间:2014-05-14 00:55:07

标签: ruby

我有一个哈希h

h = {145=>1, 137=>2, 34=>3}

我想将其转换为以下形式的哈希数组:

[{cid:145, qty:1}, {cid:137, qty:2}, {cid:34, qty:3}]

我的第一次尝试解决方案适用于此示例:

h.keys.zip(h.values).map { |cid, qty| {cid:cid, qty:qty} }

评估到

[{:cid=>145, :qty=>1}, {:cid=>137, :qty=>2}, {:cid=>34, :qty=>3}]

我担心h.keysh.values不会始终对齐,因为哈希不一定是有序的。

如何确保h的密钥与相应的值配对,以解决此问题?

1 个答案:

答案 0 :(得分:1)

h = {145=>1, 137=>2, 34=>3}
h.map!{ |k, v| {:cid =>k, :qty => v} }