【问题标题】:How can i search a value in Ruby Hash Table?如何在 Ruby 哈希表中搜索值?
【发布时间】:2017-07-02 16:37:41
【问题描述】:
area_dictionary = {
  "Alabama" => "205",
  "Alaska" => "907",
  "American Samoa" =>"684",
  "Arizona" => "480",
  "Arkansas" => "479",
  "California" => "209",
  "Colorado" => "303",
  "Connecticut" => "203",
  "Delaware" => "302",
  "Florida" => "239",
  "Georgia" => "229",
  "Guam" => "671",
  "Hawaii" => "808"
}

def get_city_name(hash,key)
    hash.each{|k,v|puts k if v==key}
end
    puts"Please enter the code for which you want to find the city?"
    code = gets.chomp
    if area_dictionary.include?(code)#getting trouble from here
      puts "The city for #{code}is#{get_city_name(area_dictionary,code)}"
    end

【问题讨论】:

  • 你试过什么?你搜索过这个吗?我想这方面的信息应该无处不在。
  • 我推荐阅读the docs
  • def get_city_name(hash,key) hash.each{|k,v|puts k if v==key} end puts "请输入您要查找城市的代码?" code = gets.chomp if area_dictionary.include?(code) puts "The city for #{code} is #{get_city_name(area_dictionary,code)}"
  • 请编辑您的问题并在此处添加代码。

标签: ruby


【解决方案1】:

如果您要查找值的键,可以使用以下方法:

area_dictionary.invert['239']
=> "Florida"

如果您只是尝试获取给定键的值,则可以使用以下方法:

area_dictionary['Florida']
=> "239"

【讨论】:

  • 我需要像 code = gets.chomp if area_dictionary.include 一样搜索'239'是否存在于哈希中?(code)
  • 也可以使用方法area_dictionary.has_value?('239')
【解决方案2】:

一些不言自明的例子

area_dictionary["Alaska"]
 => "907"
area_dictionary["Alaskaaaa"]
 => nil
area_dictionary.fetch("Alaska")
 => "907"
area_dictionary.fetch("Alaskaaaa")
 KeyError: key not found: "Alaskaaaa"
    from (irb):5:in `fetch'
    from (irb):5
    from /usr/local/bin/irb:11:in `<main>'
area_dictionary.fetch("Alaskaaaa", 10)
 => 10
area_dictionary.values_at("Alabama", "Alaska")
 => ["205", "907"]

【讨论】:

    猜你喜欢
    • 2011-01-15
    • 2016-06-27
    • 2012-10-12
    • 2017-02-15
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    相关资源
    最近更新 更多