Сортировка двумерного хэша в обратном порядке - PullRequest
0 голосов
/ 27 апреля 2010

У меня есть 2-й хэш. Мне нужно отсортировать каждый дополнительный хэш по значению в порядке убывания.

hsh={"a"=>{0=>1, 1=>2}}

output= {"a"=>{1=>2,0=>1}}

Спасибо и ура!

Ответы [ 2 ]

2 голосов
/ 27 апреля 2010

Вы не можете повлиять на то, в каком порядке элементы итераций отображаются в хэш-карте (в порядке итерации (и отображения) в ruby ​​1.9, он точно такой же, как порядок вставки, поэтому, если вы создаете хеш из отсортированного массива хеш будет также отсортирован).

Все, что вы можете сделать, это превратить хэш в массив и отсортировать его. Как:

hsh.map {|k,v| [k, v.sort.reverse]}
#=> [["a", [[1, 2], [0, 1]]]]
0 голосов
/ 27 апреля 2010

Хеш - НЕПРАВИЛЬНАЯ коллекция. Вы не можете установить свой собственный заказ.

http://apidock.com/ruby/Hash

The order in which you traverse a hash by either key or value may seem arbitrary, and will generally not be in the insertion order.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...