Как я сортирую массив хешей значением в хеше?

Этот код Ruby не ведет себя, как я ожидал бы:

# create an array of hashes
sort_me = []
sort_me.push({"value"=>1, "name"=>"a"})
sort_me.push({"value"=>3, "name"=>"c"})
sort_me.push({"value"=>2, "name"=>"b"})

# sort
sort_me.sort_by { |k| k["value"]}

# same order as above!
puts sort_me

Я надеюсь сортировать массив хешей ключевым "значением", но они печатаются неотсортированные.

113
задан the Tin Man 2 January 2012 в 08:14
поделиться

2 ответа

Сортировка Ruby не сортирует на месте. (Возможно, у вас есть опыт работы с Python?)

Рубин имеет сортировку! для сортировки на месте, но нет варианта на месте для sort_by. На практике можно сделать:

sorted = sort_me.sort_by { |k| k["value"] }
puts sorted
205
ответ дан 24 November 2019 в 02:41
поделиться

Согласно @shteef, но реализовано с помощью сортировки ! Предлагаемый вариант :

sort_me.sort! { |x, y| x["value"] <=> y["value"] }
21
ответ дан 24 November 2019 в 02:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: