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

  • khloe brooks

    khloe brooks

    25 Temmuz 2011
  • Michelle Phan

    Michelle Pha

    18 Temmuz 2006
  • Warner Bros. UK

    Warner Bros.

    6 HAZİRAN 2008