Ruby についての質問です、同じ長さで、添え字が数字のままの配列a,bがあるときに、a の値をキーにして、値をb の値にするのは簡単にできるのでしょうか?

PHP で言えば、array_combine という関数と同じものです。
http://php.benscom.com/manual/ja/function.array-combine.php
each でまわせばできるのは当然なので、コマンド一発があったら教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/09/19 13:15:28
  • 終了:2008/09/19 15:11:22

回答(3件)

id:iwadon No.1

いわどん回答回数60ベストアンサー獲得回数132008/09/19 13:58:53

ポイント27pt

おそらくarray_combine関数そのままの機能は無いと思いますので、Array#zipとHash[]を組み合わせてみるのはどうでしょうか。

a = [1, 2, 3]
b = [4, 5, 6]
a.zip(b) # => [[1, 4], [2, 5], [3, 6]]
Hash[a.zip(b)] #=> {1 => 4, 2 => 5, 3 => 6}
id:rubikitch No.2

るびきち回答回数120ベストアンサー獲得回数222008/09/19 14:08:36

ポイント27pt

Enumerable#zip, Array#transpose等。

a = ['green', 'red', 'yellow']
b = ['avocado', 'apple', 'banana']
a.zip(b) # => [["green", "avocado"], ["red", "apple"], ["yellow", "banana"]]
[a,b].transpose # => [["green", "avocado"], ["red", "apple"], ["yellow", "banana"]]
Hash[*a.zip(b).flatten(1)] # => {"green"=>"avocado", "red"=>"apple", "yellow"=>"banana"}

http://d.hatena.ne.jp/rubikitch/

id:nora1962 No.3

nora1962回答回数2ベストアンサー獲得回数02008/09/19 14:59:25

ポイント26pt

keys = [1, 2, 3]

vals = ["a", "b", "c"]

alist = keys.zip(vals)

h = Hash[*alist.flatten]

というやり方があるらしいです。

http://www.ruby-lang.org/ja/man/html/Hash.html

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません