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」所需的返回值(散列)。 –