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

  • Disney Pets and Animals

    Disney Pets

    29 ŞUBAT 2012
  • Michael Zhang

    Michael Zhan

    8 EYLÜL 2012
  • Rugiagialia

    Rugiagialia

    1 Ocak 2008