pokemon_list.split.product([0]).to_h
#=> {"pikachu"=>0, "charizard"=>0, "jigglypuff"=>0, "bulbasaur"=>0}
步骤:
a = pokemon_list.split
#=> ["pikachu", "charizard", "jigglypuff", "bulbasaur"]
b = a.product([0])
#=> [["pikachu", 0], ["charizard", 0], ["jigglypuff", 0], ["bulbasaur", 0]]
b.to_h
#=> <hash shown above>
或者,
Hash[pokemon_list.split.product([0])]
这里Array#product只是一个pokeman_list.zip(a)
其中a
是由pokenman_list.size
相等的元素,这里零阵列速记形式。另请参阅Enumerable#zip。
或使用String#gsub!
这是另一种不需要将字符串转换为数组的方式。
pokemon_list.gsub(/[[:alpha:]]+/).with_object({}) { |w,h| h[w] = 0 }
#=> {"pikachu"=>0, "charizard"=>0, "jigglypuff"=>0, "bulbasaur"=>0}
这工作,因为gsub
当不使用块执行返回一个枚举。无可否认这是该方法的一种不寻常用法(因为它不能替换字符串中的字符),但有时候我发现它很有用。
你对“皮卡丘charizard jigglypuff bulbasaur”字符串有什么期望? – MikDiet
请编辑您的问题,以显示给定字符串“pokemon_list”所需的返回值(散列)。 –