こんにちは。
解法の一例としまして、以下のように、h = Hash[*b.flatten]
として、
bをハッシュにするという方法でいかがでしょうか。
[ykt68@macbp15 ~]$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]
[ykt68@macbp15 ~]$ cat tera58437.rb
ruby
1#! /usr/bin/env ruby
2# coding: utf-8
3
4a = {"AA"=>79, "BB"=>54, "CC"=>33}
5
6b = [["AA", "a, aa"], ["BB", "bb"], ["CC", "cc"]]
7
8h = Hash[*b.flatten] # b をハッシュにする。
9
10a.each do |k,v|
11 puts "#{k}(#{h[k]}), #{v}"
12end
[ykt68@macbp15 ~]$ ruby tera58437.rb
AA(a, aa), 79
BB(bb), 54
CC(cc), 33
[ykt68@macbp15 ~]$
以上ご参考になれば幸いです。
【追記】
上記のコードで、bからhを作るのに、お使いのRubyのバージョンが、2.1以上であれば、
to_h
https://docs.ruby-lang.org/ja/latest/method/Array/i/to_h.html
というメソッドがあり、これを使えば、より簡単に
でOKではないかと思います。(私の手元にあるRubyが、2.0なので試せませんが)
【追記2】
別の解法です。
もし、お使いのRubyのバージョンが、2.1以上であれば、to_h
を使って、
目的のハッシュ c を、以下のようにして作ることが出来ると思います。
ruby
1#! /usr/bin/env ruby
2# coding: utf-8
3
4a = {"AA"=>79, "BB"=>54, "CC"=>33}
5
6b = [["AA", "a, aa"], ["BB", "bb"], ["CC", "cc"]]
7
8c = b.map {|x| [ "#{x[0]}(#{x[1]})", a[x[0]] ] }.to_h # => {"AA(a, aa)"=>79, "BB(bb)"=>54, "CC(cc)"=>33}
ご参考まで。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/12/12 06:33
2016/12/12 06:43