2013-11-14 4 views
0

У меня есть следующий хэш:Сортировать хэш по ключу в порядке убывания

{"2013-08-12"=> 10, "2013-08-13"=> 20, "2013-11-11"=>30, "2013-11-14"=> 40} 

То, что я хочу сделать, это сортировать его по ключу (даты в формате гггг-мм-дд) в порядке убывания:

{"2013-11-14"=> 40, "2013-11-11"=>30, "2013-08-13"=> 20, "2013-08-12"=> 10} 

Возможно ли это?

ответ

3

Это возможно.

Hash[ 
    {"2013-08-12"=> 10, "2013-08-13"=> 20, "2013-11-11"=>30, "2013-11-14"=> 40} 
    .sort_by{|k, _| k}.reverse 
] 

# => { 
    "2013-11-14" => 40, 
    "2013-11-11" => 30, 
    "2013-08-13" => 20, 
    "2013-08-12" => 10 
} 
+0

Следует отметить, что он доступен только в Ruby 1.9.x или выше. Предыдущие версии не сохраняют последовательность клавиш «Хэш». –

+0

Не думаю, что вам нужно это отметить. Ruby 1.8.7 давно устарел. Даже Ruby 1.9 старый. Для меня даже Ruby 2.0 стареет, поскольку я использую Ruby 2.1. Что еще более важно, вопрос не имел бы смысла с Ruby 1.8. – sawa

+1

Спасибо, что видели пилы, он работал как шарм. Марек, спасибо, что заметили это, этот подход мне подходит, так как я использую 1.9.3 –

Смежные вопросы