Ruby 从散列返回单个键?

Ruby 从散列返回单个键?,ruby,hash,key,Ruby,Hash,Key,我想知道如何从散列返回特定的键 例如: moves = Hash["Kick", 100, "Punch", 50] 如何从该散列返回第一个键“Kick” 注意:我知道下面的函数将返回散列中的所有键,但我只想返回一个键 moves.keys #=> ["Kick", "Punch"] 移动。键。首先将完成此操作。您可以使用: first_key, first_value = moves.first 或相当于: first_key = moves.first.first 也很不错:

我想知道如何从散列返回特定的键

例如:

moves = Hash["Kick", 100, "Punch", 50]
如何从该散列返回第一个键“Kick”

注意:我知道下面的函数将返回散列中的所有键,但我只想返回一个键

moves.keys #=> ["Kick", "Punch"]

移动。键。首先
将完成此操作。

您可以使用:

first_key, first_value = moves.first
或相当于:

first_key = moves.first.first
也很不错:

first_key = moves.each_key.first
另一种可能性是,
moves.keys.first
将为所有可能非常大的键构建一个中间数组

请注意,Ruby 1.8不保证哈希的顺序,因此您得到的密钥并不总是相同的。在Ruby1.9中,您将始终获得相同的密钥(在您的示例中为“Kick”)

我会给你第一把钥匙。
您可以通过更改传递的参数(0,1,…等)来获取所有键。

可能在Ruby 1.9中工作,在Ruby 1.9中保留哈希顺序,但在Ruby 1.8中不工作(“第一个”键将是任何一个可能的键)。我感谢您的快速响应。谢谢@Zabba我很久以前就升级了版本,谢谢你的提醒。@Zabba这个问题不是假设它是Ruby 1.9吗?否则,这个问题就没有意义了。是的,我也在1.9中。感谢@Zabba做出区分或
移动。如果
.first,则first[0]
看起来太像口吃了。希望你不介意我毁了你的幸运的“七人行”代表。为什么你只对返回一个键感兴趣?我正在设计一个游戏,并在打印语句中使用哈希键。因此,我需要一次访问一个键。在向用户或程序员显示信息时使用的“打印语句”是“puts”或“p”语句。我正在向游戏中的用户或玩家显示密钥。这就是它的设计方式,至少现在是这样。
    moves.keys[0]