从哈希中返回一个键?

Dru*_*Dru 11 ruby hash key

我想知道如何从哈希返回一个特定的密钥?

例:

moves = Hash["Kick", 100, "Punch", 50]
Run Code Online (Sandbox Code Playgroud)

如何从这个哈希中返回第一个"Kick"键?

注意:我知道以下函数将返回哈希中的所有键,但我只想返回一个键.

moves.keys #=> ["Kick", "Punch"]
Run Code Online (Sandbox Code Playgroud)

Mar*_*une 20

您可以使用:

first_key, first_value = moves.first
Run Code Online (Sandbox Code Playgroud)

或等效地:

first_key = moves.first.first
Run Code Online (Sandbox Code Playgroud)

非常好:

first_key = moves.each_key.first
Run Code Online (Sandbox Code Playgroud)

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

请注意,Ruby 1.8不保证散列的顺序,因此您获得的密钥并不总是相同.在Ruby 1.9中,您将始终获得相同的密钥("Kick"在您的示例中).


rig*_*wed 16

    moves.keys[0] 
Run Code Online (Sandbox Code Playgroud)

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


Rya*_*nmt 8

moves.keys.first 会做到这一点.

  • 可以在Ruby 1.9中工作,其中保留哈希顺序,但不在1.8中("第一个"键将是任何一个可能的键) (8认同)