【问题标题】:Hash map in ruby is storing key-value pair automaticallyruby 中的哈希映射自动存储键值对
【发布时间】:2015-01-10 11:25:18
【问题描述】:

这通常是在 Ruby 中创建Hash Map 的一种方式

colors = {

"red" => 2, 
"blue" => 3

}

但是在下面的代码中,在哪里指定了 Key 及其对应的值,就像在 "colors" 哈希中所做的那样。

puts "enter a string"
text = gets.chomp
words=text.split
frequencies = Hash.new(0)
words.each {|word| frequencies [word] +=1}
frequencies = frequencies.sort_by do |wordy, wcounty|
    wordy
end
puts frequencies

它是在每个循环中完成还是在它旁边的行中完成,其中“频率”新值被分配为循环,如果是,如何?

我是Ruby的新手,但我对JAVA知之甚少,所以我很难理解。

【问题讨论】:

  • 提示:如何使用"blue" 键获取colors 中的值?
  • 你为什么删除答案,是不是不正确?
  • 没错,但我以为你不明白的是默认值部分。

标签: ruby data-structures hash


【解决方案1】:

如果你看看这一行:

words.each {|word| frequencies [word] +=1}

你可以把这段代码想象成这样(举例来说,这是一种不红的写法):

i=1
words.each do |word|
  frequencies [word] = i
  i = i +1
end

关键是您分配给 i 的单词及其对应的值。如果您想知道,do/end 键值与 {} 相同。当迭代器内的代码跨越多行时使用它。

希望对你有帮助

【讨论】:

  • 对,卢卡斯,但是为了给一个值分配一个键,我们使用=>,我们在“颜色”中使用的方式,但在其他代码中使用=。它用于分配值。是不是很迷惑?
  • 嗨,保罗。不是真的,有两种方法可以做到。您可以像这样创建一个哈希: colors = { "red" => 2, "blue => 3} 或者您可以创建一个新的哈希并在之后分配值,就像您对数组所做的那样: color = {}; color["red"]=2;color["blue"]=3
猜你喜欢
  • 1970-01-01
  • 2014-06-19
  • 2015-09-21
  • 1970-01-01
  • 2013-12-18
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
  • 2014-02-17
相关资源
最近更新 更多