我有一个未排序的键数组:
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”功能。 这是红宝石。谢谢!
答案 0 :(得分:4)
隐秘:
Hash[keys.zip(hash.values_at *keys)]
或者更长一点,不那么神秘:
keys.map.with_object({}) {|key, memo| memo[key] = hash[key]}