Ruby 如何将字符串转换为哈希或将其添加到哈希
因此,在basicruby中,我试图找出如何将字符串转换为散列或将字符串放入散列。我想要Ruby 如何将字符串转换为哈希或将其添加到哈希,ruby,methods,hash,split,Ruby,Methods,Hash,Split,因此,在basicruby中,我试图找出如何将字符串转换为散列或将字符串放入散列。我想要pokemon项作为键,一个整数作为值 大概是这样的: hash = {} pokemon_list = "pikachu charizard jigglypuff bulbasaur" def create_poke_list(string) hash << string.split end create_poke_list 如果您需要一个用默认值0初始化的散列,您只需执行以下操作即可
pokemon
项作为键,一个整数作为值
大概是这样的:
hash = {}
pokemon_list = "pikachu charizard jigglypuff bulbasaur"
def create_poke_list(string)
hash << string.split
end
create_poke_list
如果您需要一个用默认值0初始化的散列,您只需执行以下操作即可
hash = Hash.new(0)
p hash["pikachu"]
#=> 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>
这里只是pokeman_list.zip(a)
的简写形式,其中a
是由pokenman_list.size
相等元素组成的数组,这里为零。另见
或使用
这是另一种不需要将字符串转换为数组的方法
pokemon_list.gsub(/[[:alpha:]]+/).with_object({}) { |w,h| h[w] = 0 }
#=> {"pikachu"=>0, "charizard"=>0, "jigglypuff"=>0, "bulbasaur"=>0}
这是因为
gsub
在没有块的情况下执行时返回枚举数。无可否认,这是该方法的一个不同寻常的用法(因为它不会替换字符串中的字符),但我发现它有时很有用。您对“pikachu charizard jigglypuff bulbasaur”
字符串的预期结果是什么?请编辑您的问题,以显示所需的返回值(散列)对于给定的字符串pokemon\u list
。我认为这是一个很好的答案,但需要解释为什么#product比Hash.new(0)
更有意义。你和我都知道它为什么有效,但对大多数人来说,产品是一种非直觉的选择@CodeGnome,谢谢你的建议。我做了编辑,但我不知道如何利用Hash.new(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])]
pokemon_list.gsub(/[[:alpha:]]+/).with_object({}) { |w,h| h[w] = 0 }
#=> {"pikachu"=>0, "charizard"=>0, "jigglypuff"=>0, "bulbasaur"=>0}