Ruby-从哈希数组中创建哈希

dmt*_*989 0 ruby arrays hash ruby-on-rails-4

我有一系列哈希:

@operating_systems = [
  {"title"=>"iPhone", "value_percent"=>"42.6"},
  {"title"=>"Windows 7", "value_percent"=>"21.3"},
  {"title"=>"Android", "value_percent"=>"12.8"},
  {"title"=>"Mac OS X", "value_percent"=>"8.5"},
  {"title"=>"Windows 8.1", "value_percent"=>"6.4"},
  {"title"=>"Windows XP", "value_percent"=>"4.3"},
  {"title"=>"Linux", "value_percent"=>"2.1"},
  {"title"=>"Windows Vista", "value_percent"=>"2.1"}
] 
Run Code Online (Sandbox Code Playgroud)

并想要创建以下哈希:

 {"iphone" => "42.6", "windows 7" => "21.3", ... "windows vista" => "2.1"}
Run Code Online (Sandbox Code Playgroud)

完成此任务的最佳方法是什么?

saw*_*awa 6

[
  {"title"=>"iPhone", "value_percent"=>"42.6"},
  {"title"=>"Windows 7", "value_percent"=>"21.3"},
  {"title"=>"Android", "value_percent"=>"12.8"},
  {"title"=>"Mac OS X", "value_percent"=>"8.5"},
  {"title"=>"Windows 8.1", "value_percent"=>"6.4"},
  {"title"=>"Windows XP", "value_percent"=>"4.3"},
  {"title"=>"Linux", "value_percent"=>"2.1"},
  {"title"=>"Windows Vista", "value_percent"=>"2.1"}
]
.map{|h| h.values.map(&:downcase)}.to_h
# =>
# {
#   "iphone"=>"42.6",
#   "windows 7"=>"21.3",
#   "android"=>"12.8",
#   "mac os x"=>"8.5",
#   "windows 8.1"=>"6.4",
#   "windows xp"=>"4.3",
#   "linux"=>"2.1",
#   "windows vista"=>"2.1"
# }
Run Code Online (Sandbox Code Playgroud)

  • 我不知道如何改进这一点.+1. (2认同)