29 Mart 2010, PAZARTESİ
Nasıl sayı değeri tarafından Ruby bir Karma sıralamak için?
Saymak sıralamak için çalışıyorum karşı bir karması var. İçine çalıştırıyorum sorun varsayılan Karma.sıralama numarası boyutuna göre dizeleri yerine, türlü numaralar işlevi.
yani Verilen Karma:
metrics = {"sitea.com" => 745, "siteb.com" => 9, "sitec.com" => 10 }
Bu çalışan kod:
metrics.sort {|a1,a2| a2[1]<=>a1[1]}
döner sıralanmış bir dizi:
[ 'siteb.com', 9, 'sitea.com', 745, 'sitec.com', 10]
745 9, 9 listesinde ilk görünür daha büyük bir sayı olsa bile. Üst sayısı olan göstermeye çalışırken, bu hayatımı zorlaştırıyor. :)
Sayı değerine göre bir hash (veya bir dizi) sıralama hakkında herhangi bir fikir boyutu?
Ben herhangi bir yardım için teşekkür ederiz.
CEVAP
29 Mart 2010, PAZARTESİ
Dize değeri sıralamak değil, çünkü senin sonuçlar nasıl hiçbir fikrim yok,... örnek a1
a2
ters gerekir
Her zaman (başına Mladen olarak) yoludur:
metrics = {"sitea.com" => 745, "siteb.com" => 9, "sitec.com" => 10 }
metrics.sort_by {|_key, value| value}
# ==> [["siteb.com", 9], ["sitec.com", 10], ["sitea.com", 745]]
Sonuç olarak karma ihtiyacınız varsa, to_h
(Ruby 2.0 ) kullanabilirsiniz
metrics.sort_by {|_key, value| value}.to_h
# ==> {"siteb.com" => 9, "sitec.com" => 10, "sitea.com", 745}
Bunu Paylaş:
Nasıl sütun(s) tarafından bir datafram...
Nasıl Ruby rastgele bir sayı almak içi...
Nasıl Karma bir anahtarı kaldırın ve R...
Nasıl ruby karma bir nesneyi JSON dönü...
Nasıl PHP belirli bir anahtar değeri i...