ruby - 如果 'key' 或 'value' 包含 ruby​​ 中的值,则选择哈希元素

标签 ruby methods hash

我想知道是否有一种方法可以在哈希表中搜索包含值的键和值。

目前我正在这样做:

 #for this example say 
 bot,input = "rock","scissors" 

hash = Hash['rock', 'scissors', 'scissors', 'paper', 'paper', 'rock'] 
outcome = ([hash.rassoc(bot), hash.assoc(bot)] &  [hash.rassoc(input),hash.assoc(input)]).flatten

这里的Outcome找到所有包含bot和input的hash元素;然后检查他们有哪些共同点。 只是想知道我是否有一种方法可以返回我想要的东西:

outcome = [hash.rassoc(bot), hash.assoc(bot)]

最佳答案

这是您要找的吗?

winners = { "rock"=>"scissors", "scissors"=>"paper", "paper"=>"rock" } 

def outcome(winners, player, opponent)
  return :win  if winners.any? { |pair| pair == [player, opponent] }
  return :lose if winners.any? { |pair| pair == [opponent, player] }
  return :tie
end

outcome winners, "rock", "scissors" #=> :win
outcome winners, "scissors", "rock" #=> :lose
outcome winners, "rock", "rock"     #=> :tie

关于ruby - 如果 'key' 或 'value' 包含 ruby​​ 中的值,则选择哈希元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41309553/

相关文章:

ruby-on-rails - 如何在RestClient获取请求头中传递参数并访问 Controller 中的参数

ruby-on-rails - 使用 carrierwave gem rails4 安全上传/下载文件

sql-server - 如何使用哈希字节(如校验和)?

ruby-on-rails - 如何在回形针 ruby​​ on rails 中设置默认图像

ruby - 绑定(bind)与分配

java - 在 main 中调用带有引用变量的方法

asp.net - ASCX 控件 ASP.NET - 找不到可见方法

c# - 传递未知类型的参数

java - 如何在 Java 中深度复制哈希器

python - python字典的奇怪行为