SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Arun Kumar

    Arun Kumar

    18 Mart 2010
  • listedabive

    listedabive

    30 Ocak 2007
  • Rugiagialia

    Rugiagialia

    1 Ocak 2008