【发布时间】:2013-12-08 03:31:16
【问题描述】:
我有一个这样的哈希:
Some_hash =
{"Albania"=>"Europe",
"Andorra"=>"Europe",
"Austria"=>"Europe",
Lebanon"=>"Asia",
"Macau"=>"Asia",
"Malaysia"=>"Asia",
"Papua New Guinea"=>"Asia",
"Jamaica"=>"North America",
"Martinique"=>"North America",
"Argentina"=>"South America",
"Chile"=>"South America",
"Sao Tome and Principe"=>"Africa",
"Senegal"=>"Africa",
"Somalia"=>"Africa",}
我想分别识别五大洲,以及属于它们的国家,这样我最终会得到这样的结果:
{"Africa" => ["Senegal", "Somalia"]}
{"Europe" => ["Albania", "Andorra", "Austria"]}
适用于所有大陆。
我试过这个:
def country
inflation_hash = {}
XPath.match( data, "//country").map do |element|
inflation_hash[element.attributes["name"]] = element.attributes["continent"]
end
inflation_hash.each do |country, continent|
new_hash = {}
if inflation_hash.has_value?("Africa") == true
new_hash["Africa"] = inflation_hash.keys
puts new_hash
end
end
end
而且效果太好了。我得到了一个新的哈希:
{Africa => []}
但我有两个问题:
- 我为每个非洲国家创建一个新的哈希值。
- 每个新哈希都包含所有密钥,其中包括所有非非洲国家/地区。
我认为第一个问题与each 方法有关,所以我必须设置一些条件,对吧?
第二个问题,我不知道如何解决。
任何指针将不胜感激。
【问题讨论】:
-
检查通货膨胀哈希是否包含“非洲”