如何在哈希中获取下一个值

时间:2014-09-05 10:09:02

标签: ruby-on-rails hash

我有哈希例如

{ 1 => 5, 3 => 6, 5 => 5, 8 => 10, 11 => 11}

我有一个密钥 - 5,我需要使用下三个键值获取哈希值。在这种情况下,结果将是:

{ 8 => 10, 11 => 11, 1 => 5}

我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

这不是哈希表的常用用例。重点是能够有效地查找特定的键,而不是按顺序迭代键。

如果你想这样做,你需要选择另一种数据结构,而不是哈希或哈希(如果你仍然希望有效查找)。

如果你知道它们是整数键,你可以测试后续的键是否存在,直到找到三个,但效率非常低,尤其是,如果当前的那个是第二高的,例如。您可以更好地维护不同的数据结构。

答案 1 :(得分:0)

你不能

Ruby哈希是无序的。没有可靠的"下一个"键/值。

答案 2 :(得分:0)

正如其他人所说,你无法获得下一个'一对价值观。如果您正在寻找专门针对按键都是数字的数字排序对,您可以执行以下操作:

h = { 1 => 5, 3 => 6, 5 => 5, 8 => 10, 11 => 11}
sorted_keys = h.keys.sort

sorted_keys.each do |key|
  p "#{key} = #{h[key]}"
end

返回:

"1 = 5"
"3 = 6"
"5 = 5"
"8 = 10"
"11 = 11"