我有哈希,它的所有值都是数组,像这样:
list = { letter: ['a', 'b', 'c'],
number: ['one', 'two', 'three'],
fruit: ['apple', 'pear', 'kiwi'],
car: ['vw', 'mb', 'bmw'],
state: ['la', 'ny', 'fl'],
color: ['red', 'white', 'black'],
tree: ['oak', 'pine', 'maple'],
animal: ['cat', 'dog', 'rat'],
clothes: ['tie', 'sock', 'glove'] }
字符串
事实上,这个哈希可以有更多的键,值可以更大,但每个值的大小总是相同的(在这种情况下-三个)。
我想把这个哈希值转换成哈希数组。
每个散列将具有原始散列的所有键和相应的值。
最后,我想拥有:
list = [
{ letter: 'a', number: 'one', fruit: 'apple', car: 'vw', state: 'la',
color: 'red', tree: 'oak', animal: 'cat', clothes: 'tie' },
{ letter: 'b', number: 'two', fruit: 'pear', car: 'mb', state: 'ny',
color: 'white', tree: 'pine', animal: 'dog', clothes: 'sock' },
{ letter: 'c', number: 'three', fruit: 'kiwi', car: 'bmw', state: 'fl',
color: 'black', tree: 'elm', animal: 'rat', clothes: 'glove' }
]
型
最好的办法是什么?
6条答案
按热度按时间pbpqsu0x1#
使用
Array::new
作为新数组“构建器”,Enumerable#each_with_object
作为每个项的“构建器”字符串
ssgvzors2#
字符串
假设
list
定义如下。型
步骤如下。
型
让我们更仔细地看看最后一步。
map
将e
的第一个元素传递给块,并将块变量a
设置为它的值:型
块计算如下。
型
e.map { |a| a.transpose.to_h }
的其余计算类似。y3bcpkx13#
利用Array#transpose和Array#to_h
字符串
roejwanj4#
All in one:
字符串
这个想法是使用每个关键产品的值,Map,转置,然后通过
to_h
转换为散列。bqf10yzr5#
尝试以下代码,
字符串
输出将
型
jljoyd4f6#
关于
Enumerable#each_with_object
:字符串