Turn an array into keys for hash
问题 How do I turn an Array into a Hash with values of 0 without an each loop. For example, given this array: [1, 2, 3, 4] I want to get this hash: {"1"=>0, "2"=>0, "3"=>0, "4"=>0} 回答1: I'm a fan of simple, and I can never remember exactly how crazy things #inject or Hash constructor arguments work. array = [1, 2, 3, 4] hash = {} array.each do |obj| hash[obj.to_s] = 0 end puts hash.inspect # {"1"=>0, "2"=>0, "3"=>0, "4"=>0} 回答2: The standard approach is Hash[...]: Hash[xs.map { |x| [x.to_s, 0] }]