Próbuję przekonwertować tablicę skrótów na skrót z kluczem jako jeden z elementów skrótu w tablicy.
Na przykład: a = [{"active_accounts": 3, "id": 5}, {"active_accounts": 6, "id": 1}
Chcę przekonwertować tę tablicę na
a = {5: {"active_accounts": 3}, 1: {"active_accounts": 6}}
Próbowałem to zrobić, zapętlając tablicę i uzyskując dostęp do indywidualnego skrótu dla określonego klucza, ale to nie wydaje się działać. Wszelkie potencjalne szanse byłyby mile widziane.
Odpowiedzi:
2 dla odpowiedzi № 1a.each_with_object({}) {|obj , hash| hash.merge!(Hash[obj[:id], Hash["active_accounts",obj[:active_accounts]]])}
# {5=>{"active_accounts"=>3}, 1=>{"active_accounts"=>6}}
Mam nadzieję, że to pomoże.
1 dla odpowiedzi nr 2
Bezpieczny wariant, mapowanie na tablice (to samo "id"
są oczekiwane i odpowiednio traktowane):
a.group_by { |e| e.delete("id") }
Dokładnie o co prosiłeś:
a.group_by { |e| e.delete("id") }
.map { |k, v| [k, v.first] }
.to_h
1 dla odpowiedzi nr 3
Jeszcze jedno możliwe rozwiązanie)
a.map { |hash| [hash.delete(:id), hash] }.to_h
#=> {5=>{:active_accounts=>3}, 1=>{:active_accounts=>6}}