我想要做的是将一堆用户输入的字符串推送到哈希键,并按其输入顺序从 0 向上为每个键分配一个数值。例如;
用户输入:“a s d f b”
结果:
a => 0
b => 1
c => 2
d => 3
f => 4
b => 5
但是我的代码只输出 0 没有增量,请看我下面的代码;
puts "Please enter data:"
text = gets.chomp
words = text.split(" ")
frequencies = Hash.new(0)
words.each do |k|
frequencies[k] += 1
end
frequencies.each do |x,y|
puts x + " " + y.to_s
end
谁能看出上面的代码有什么问题?
最佳答案
此 Hash
中每个键的默认值都是 0
,因此通过
frequencies[k] += 1
您正在将每个值(不存在的键)从
0
增加到 1
。一个简单的解决方法是使用外部计数器作为值:
counter = 0
words.each do |k|
frequencies[k] = counter
counter += 1
end
关于ruby - 在 Ruby 中更新哈希值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31100968/