将一组键连接到具有键值对的散列,如excel vlookup

时间:2012-04-02 18:21:47

标签: ruby arrays hash hashmap

我有一个未排序的键数组:

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

和哈希

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

我想加入这两个数据结构,将原始键的顺序返回到第一个键:

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

不在散列中的项目(如“ggg”)应返回nil。 这类似于excel中的“v-lookup”功能。 这是红宝石。谢谢!

1 个答案:

答案 0 :(得分:4)

隐秘:

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

或者更长一点,不那么神秘:

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