私はこのようなハッシュを持っています:
a = { 29 => 3, 14 => 6, 13 => 2, 32 => 10 }
そこにある値、つまり3,6,2,10に基づいてこのハッシュを並べ替えたい
できますa.values.sort
ただし、ソートされた値のみの配列を返します。実際のハッシュを並べ替えたいので、すべて同じキーと値のペアで並べ替えられた新しいハッシュを返す必要があります(または、理想的には元のハッシュを並べ替えられたハッシュで更新します)。
私はこのようなハッシュを持っています:
a = { 29 => 3, 14 => 6, 13 => 2, 32 => 10 }
そこにある値、つまり3,6,2,10に基づいてこのハッシュを並べ替えたい
できますa.values.sort
ただし、ソートされた値のみの配列を返します。実際のハッシュを並べ替えたいので、すべて同じキーと値のペアで並べ替えられた新しいハッシュを返す必要があります(または、理想的には元のハッシュを並べ替えられたハッシュで更新します)。
これはRuby1.9で動作します。
a = { 29 => 3, 14 => 6, 13 => 2, 32 => 10 }
p Hash[a.sort_by{|k,v| v}]
#=> {13=>2, 29=>3, 14=>6, 32=>10}
Ruby(1.9より前)のハッシュはソートされていません。ハッシュの実装ではエントリがソートされたままにならないため、「同じキーと値のペアがソートされた新しいハッシュを返すことはできません」。2つのオプションがあります。