簡體   English   中英

Ruby - 如何用不同的鍵替換散列中的鍵?

[英]Ruby - how to replace key in a hash by a key from different one?

我有這個哈希:

CARS = {"Audi"     => 0, 
        "BMW"     => 1,
        ...}

這個來自 ActiveRecord ( @top_cars ) 的輸出:

{1=>18, 0=>17, 3=>13, 5=>10, 2=>5, 4=>1}

如何用來自CARS的汽車名稱替換來自@top_cars的鑰匙?

謝謝

編輯:所以所需的輸出應該是{"BMW"=>18, "Audi"=>17, "Renault"=>13, "Mercedes"=>10, "Ford"=>5, "Porsche"=>1}

這可以解決問題:

@top_cars.map {|key, value| [CARS.key(key), value]}.to_h

可能的解決方案:

@top_cars.inject({}) {|memo, (key,value)| memo.merge(CARS.key(key) => value)}

您可以將cars與自身合並:

cars = { "Audi"     => 0,
         "Mercedes" => 1,
         "Ford"     => 2,
         "Renault"  => 3,
         "BMW"      => 4,
         "Porsche"  => 5
       }

top_cars = {1=>18, 0=>17, 3=>13, 5=>10, 2=>5, 4=>1}

cars.merge(cars) { |*,n| top_cars[n] }
  #=> {"Audi"=>17, "Mercedes"=>18, "Ford"=>5, "Renault"=>13, "BMW"=>1, "Porsche"=>10} 

這使用Hash#merge的形式,其中使用一個塊來確定存在於被合並的兩個散列中的鍵的值,這里是所有鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM