如何从哈希表中获取某个值

时间:2011-10-12 12:00:00

标签: ruby arrays

values = []
values << [ '1', 'one']
values << [ '2', 'two']
values << [ '3', 'three']

one = '1'

puts values[one]

以上一行引发了异常。

4 个答案:

答案 0 :(得分:4)

你定义了一个数组,你想要一个哈希。

values = {}
values['1'] = 'one'
values['2'] = 'two'
values['3'] = 'three'

one = '1'
values[one] #=> 'one'

当然你应该写:

values = {
 '1' => 'one',
 '2' => 'two',
 '3' => 'three',
}

one = '1'    
values[one] #=> 'one'

答案 1 :(得分:3)

那不是哈希表;那是一个数组。 values的值为[['1', 'one'], ['2', 'two'], ['3', 'three']]

您正在寻找的代码是:

values = {'1' => 'one', '2' => 'two'}
values['3'] = 'three'

one = '1'

puts values[one] # => 'one'

答案 2 :(得分:1)

像其他人指出的那样,它真的不是哈希表,它更像是二维数组。虽然这种方式检索值无效。从这种结构中获得价值的方法可能是

values.select { |entry| entry[0].eql? '1' }[0][1]

答案 3 :(得分:1)

您可以将键值对数组转换为哈希值:

values = []
values << [ '1', 'one']
values << [ '2', 'two']
values << [ '3', 'three']

hash = Hash[values]
hash['1'] # => "one"

这使用了Hash.[]方法,该方法描述为at this ruby-doc.org page