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

  • ABC News (Australia)

    ABC News (Au

    9 HAZİRAN 2008
  • How It Should Have Ended

    How It Shoul

    5 Mart 2007
  • ibebrent

    ibebrent

    23 Temmuz 2007