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

  • NicoleGrippo

    NicoleGrippo

    14 Kasım 2006
  • PoreoticsHD

    PoreoticsHD

    22 NİSAN 2010
  • Shylo Sharity

    Shylo Sharit

    27 EKİM 2011