我有這樣一個哈希:使用鍵的值進行排序的哈希
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
但它返回一個只是排序值的數組。我想對實際的散列進行排序,所以它應該返回一個新的散列(或理想情況下用已排序的散列來更新原始散列),並且使用所有相同的鍵值對進行排序!
這部作品的Ruby 1.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}
在紅寶石(預1.9)A散列是無序。您不能'使用相同的鍵值對進行排序返回新的哈希',因爲哈希實現並不會對條目進行排序。你有兩個選擇:
很酷,但他希望它按值排序:'Hash [a.invert.sort] .invert' – 2012-04-19 20:53:06
@Abe Voelker你是對的。嗯,invert.invert?勒梅認爲.. – steenslag 2012-04-19 20:55:52
是Abe Voelker ..這將是答案! a.invert將鍵值交給值鍵,然後對它們進行排序,然後將它們切換回去!真棒:D – bytebiscuit 2012-04-19 20:57:02