2012-04-02 12 views
1

Excelのようなキーと値のペアを持つハッシュにキーの配列への参加:私はこのようなキーのソートされていない配列を持っているVLOOKUP

keys = ["ccc", "ddd", "ggg", "aaa", "bbb"] 

とハッシュ

hash = {"ddd" => 4, "aaa" => 1, "bbb" => 2, "eee" => 5, "fff" => 6} 

私は思いますこれらの2つのデータ構造を結合して、元のキー順で最初のキーにハッシュを返すようにします。

{"ccc" => nil, "ddd" => 4, "ggg" => nil, "aaa" => 1, "bbb" => 2} 

ハッシュe "ggg")はnilを返します。 これはexcelの "v-lookup"機能に似ています。 これはルビーです。ありがとう!

+0

、なぜ "CCC" 3とではないnilはありますか?なぜ "ddd"は4で、3でないのですか? –

+0

私は十分なカフェインなしでこの質問を書いたので。今修正する必要があります。機能的な解決策については – hagope

答えて

4

不可解:

Hash[keys.zip(hash.values_at *keys)] 

またはビット長、ビット少ない不可解:あなたの予想されたハッシュで

keys.map.with_object({}) {|key, memo| memo[key] = hash[key]} 
+1

+1。私はそれを秘密にするつもりはない、それが何をしているのかを正確に記述する。 – tokland

+0

ハッシュの代わりに、私はこのようなハッシュの配列を持っています:[{"" ddd "=> 4}、{" aaa "} => 1 ...このソリューションはまだ動作しますか? – hagope

+0

なぜあなたはそのような愚かなデータ構造を持っていますか? 'keys'配列にマップするだけです。 – Reactormonk

関連する問題