我有2個數組:如何將一個數組轉換爲哈希鍵和另一個數組轉換爲相同哈希的值?
array1 = ["H", "e", "l", "l", "o"]
array2 = ["o", "l", "l", "e", "H"]
我希望ARRAY1元件成爲一個新的散列密鑰,和數組2元件成爲相同的哈希相應的值。有人可以建議如何做到這一點?
感謝
我有2個數組:如何將一個數組轉換爲哈希鍵和另一個數組轉換爲相同哈希的值?
array1 = ["H", "e", "l", "l", "o"]
array2 = ["o", "l", "l", "e", "H"]
我希望ARRAY1元件成爲一個新的散列密鑰,和數組2元件成爲相同的哈希相應的值。有人可以建議如何做到這一點?
感謝
array1 = ["H", "e", "l", "l", "o"]
array2 = ["o", "l", "l", "e", "H"]
p Hash[array1.zip(array2)]
# >> {"H"=>"o", "e"=>"l", "l"=>"e", "o"=>"H"}
這裏是另一個array1 = [「H」,「e」,「k」,「l」,「o」] array2 = [「o」,「l」,「l」,「e」, 「H」] p Hash [array1.zip(array2)] #>> {「H」=>「o」,「e」=>「l」,「k」=>「l」,「l」 =>「e」,「o」=>「H」}' –
乾杯,感謝您的幫助。 – kitch6041
@ kitch6041 @@ darshan提到的是有效的,如果你有重複的鍵,那麼你需要考慮數據結構,你將如何表示它。如果不是那麼,如果你想要的話,也可以用我的解決方案,而有幾個正確的答案。哪一個適合你的需要接受它。 :) –
有兩個"l"
S中的「關鍵」陣列中,而哈希值不能有重複鍵。任何解決方案將有"l" => "e"
或"l" => "l"
,但不是兩者都有。如果沒關係,那麼@ RubyLovely的解決方案非常棒。如果你想保持每對的映射,哈希的數組可能是適當的:
array1 = ["H", "e", "l", "l", "o"]
array2 = ["o", "l", "l", "e", "H"]
array1.zip(array2).map{|pair| Hash[*pair]}
# => [{"H"=>"o"}, {"e"=>"l"}, {"l"=>"l"}, {"l"=>"e"}, {"o"=>"H"}]
通過@RubyLovely解決的辦法是我會怎麼做,但對於各種這裏的目的是另一種解決方案:
array1.each_with_index.reduce({}) do |memo,(x,i)|
memo[x] = array2[i]; memo
end
# => {"H"=>"o", "e"=>"l", "l"=>"e", "o"=>"H"}
這樣做,你不需要創建一箇中間數組,因此會比這樣做更有效。
h = {}
array1.zip(array2){|k, v| h[k] = v}
h # => {"H"=>"o", "e"=>"l", "l"=>"e", "o"=>"H"}
請注意,「key」數組中有兩個「l」,而Hashes不能有重複的鍵。任何解決方案將具有「l」=>「e」或「l」=>「l」',但不是兩者都有。有些事情要注意,如果你將在數組中有成爲鍵的副本。 –
謝謝,我對編程非常陌生,我很欣賞反饋。 – kitch6041