ruby 散列中的数组到单个散列[已关闭]

ymdaylpp  于 2022-11-04  发布在  Ruby
关注(0)|答案(1)|浏览(172)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

上个月关门了。
Improve this question
我有一个非标准的数组在散列,我想把它转换成只是单一的散列没有数组。
散列中的数组:

[[[[[[[[[[[[[[[{:W31=>0.1e1}, {:W31=>0.3e1}], {:W32=>0.1e1}], {:W32=>0.3e1}], {:W33=>0.1e1}], {:W33=>0.3e1}], {:W34=>0.1e1}], {:W34=>0.3e1}], {:W35=>0.5e1}], {:W35=>0.5e1}], {:W36=>0.4e1}], {:W36=>0.6e1}], {:W37=>0.1e1}], {:W37=>0.61e2}], {:W38=>0.1e1}], {:W38=>0.6e1}]

我需要的是它们的键和值在一个哈希中:

{:W31=>0.1e1,:W32=>0.1e1, :W33=>0.1e1}

谢谢你的帮助。

olmpazwi

olmpazwi1#

可以使用展平将所有内容放在一个级别上:

[
  [[[[[[[[[[[[[[{:W31=>0.1e1}, {:W31=>0.3e1}], {:W32=>0.1e1}], {:W32=>0.3e1}], {:W33=>0.1e1}], {:W33=>0.3e1}], {:W34=>0.1e1}], {:W34=>0.3e1}], {:W35=>0.5e1}], {:W35=>0.5e1}], {:W36=>0.4e1}], {:W36=>0.6e1}], {:W37=>0.1e1}], {:W37=>0.61e2}], {:W38=>0.1e1}], {:W38=>0.6e1}
].flatten

您将获得:
[第31页=〉1},第31页=〉3},第32页=〉1},第32页=〉3},第33页=〉1},第33页=〉3},第34页=〉1},第34页=〉3},第35页=〉5},第36页=〉4},第6页=〉6},第37页=〉1},第38页=〉3},第39页=〉3},第39页=〉5},第39页=〉5},第39页=〉4},第39页=〉6},第39页=〉1},第61条、第1条、第6条]
然后在一个散列中减少:

[
  {"W31"=>1}, {"W31"=>3}, {"W32"=>1}, {"W32"=>3}, {"W33"=>1}, {"W33"=>3}, {"W34"=>1}, {"W34"=>3}, {"W35"=>5}, {"W35"=>5}, {"W36"=>4}, {"W36"=>6}, {"W37"=>1}, {"W37"=>61}, {"W38"=>1}, {"W38"=>6}
].reduce Hash.new, :merge

获取:
{“W31”=〉3,“W32”=〉3,“W33”=〉3,“W34”=〉3,“W35”=〉5,“W36”=〉6,“W37”=〉61,“W38”=〉6}

相关问题