Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 从内部散列获取密钥_Ruby_Rspec - Fatal编程技术网

Ruby 从内部散列获取密钥

Ruby 从内部散列获取密钥,ruby,rspec,Ruby,Rspec,我想从内部散列中获取值。在这种情况下,RU-始终是第一个值 PAYMENT_TYPE_TO_CURRENCY_AND_COUNTRY_MAPPING = { zimpler: { 'EUR' => ['FI'], 'SEK' => ['SE'] }, qiwi: { 'EUR' => ['RU', 'KZ'], 'RUB' => ['RU'], 'KZT' => ['KZ'], 'USD' =

我想从内部散列中获取值。在这种情况下,RU-始终是第一个值

PAYMENT_TYPE_TO_CURRENCY_AND_COUNTRY_MAPPING = {
    zimpler:              { 'EUR' => ['FI'], 'SEK' => ['SE'] },
    qiwi:                 { 'EUR' => ['RU', 'KZ'], 'RUB' => ['RU'], 'KZT' => ['KZ'], 'USD' => ['UA'] },
    payu:                 { 'CZK' => ['CZ'], 'PLN' => ['PL']},
    entercash:            { 'EUR' => ['AT', 'DE', 'FI'], 'SEK' => ['SE'] },
    carulla:              { 'USD' => ['CO'] }
}
我试过这个:

PAYMENT_TYPE_TO_CURRENCY_AND_COUNTRY_MAPPING.each do |payment_method_key, array|

        p payment_method_key.to_s /// prints "qiwi" - OK

        p array.keys.first /// prints "EUR" - OK

        p array[array.keys.first] //// prints ["RU", "KZ"] - not OK - need only RU
end

如何实现此功能?

我不清楚您每次是只想获取第一个元素(前面的答案完成了这一点),还是每次只想要一个“特定”元素。另一种允许您选择特定国家的方法是:

PAYMENT_TYPE_TO_CURRENCY_AND_COUNTRY_MAPPING.each_pair do |method, currencies|
    currencies.each_pair do |currency, countries|
        countries.each do |country|
            p country if country == "RU"
        end
    end
end

output:
=> "RU"
   "RU"

return value would be the original hash:
=> {:zimpler=>{"EUR"=>["FI"], "SEK"=>["SE"]},
:qiwi=>{"EUR"=>["RU", "KZ"], "RUB"=>["RU"], "KZT"=>["KZ"], "USD"=>["UA"]},
:payu=>{"CZK"=>["CZ"], "PLN"=>["PL"]},
:entercash=>{"EUR"=>["AT", "DE", "FI"], "SEK"=>["SE"]},
:carulla=>{"USD"=>["CO"]}}

为什么我要投否决票?
array[array.keys.first]。first
?非常好!谢谢!