В Ruby есть короткий и сладкий способ сортировки этот хэш массивов по баллам по убыванию:Сортировка хэш-массивов на одном из массивов в рубин
scored = {:id=>[1, 2, 3], :score=>[8.3, 5, 10]}
так это выглядит ?:
scored = {:id=>[3, 1, 2], :score=>[10, 8.3, 5]}
Я не смог найти пример, где я могу сортировать массивы внутри хэша, как это? Я мог бы сделать это с помощью какого-то неприятного кода, но я чувствую, что должен быть 1 или 2 лайнер, который это делает?
Ходила с этим, как я чувствовал, что это было немного более общительны. Спасибо за это. – joshweir
Согласитесь с удобочитаемостью. Накладные расходы на выполнение двух вызовов sort_by будут незначительными во всех случаях, а также нет необходимости выделять дополнительные массивы, как в моем ответе. Единственная (высокотеоретическая) проблема параллелизма заключается в том, что если вы мутируете один балл между сортированными вызовами (что, конечно же, никогда не будет реальной жизнью), вы ввернуты. :-) Это, наверное, лучший ответ. – Drenmi
@ Дренми, я не согласен. Мы не должны сортировать дважды, когда мы можем сортировать один раз. Если массивы значений были достаточно большими, методы, сортирующие один раз, были бы заметно более эффективными. Более того, сортировка дважды, imo, отрицательно влияет на читаемость. Извините, fl00r, но я не считаю, что этот ответ соответствует вашим обычным высоким стандартам. –