0

我在 ruby​​ 中对多维数组进行排序时遇到问题,找不到任何与我的问题类似的问题。我有一个数组/哈希还是两者都有?(对不起,我来自 ac/php/java 背景,这是我第一次使用 Ruby)

user['shapeshifter'] = {age => '25', country => 'Australia'}
user['user2'] = {age => '29', country => 'Australia'}
user['user3'] = {age => '21', country => 'Russia'}

我想根据年龄对用户数组进行排序。

4

2 回答 2

4

您需要一个哈希哈希,以及用于排序哈希的 ruby​​ 1.9.2,IIRC。这在按键排序散列,在 Ruby 中返回散列中进行了介绍

假设您的测试用例已修复,因此它是有效的:

user = {}
user['shapeshifter'] = {:age => 25, :country => 'Australia'}
user['user2'] = {:age => 29, :country => 'Australia'}
user['user3'] = {:age => 21, :country => 'Russia'}

只需要:

user.sort_by {|key,value| value[:age]}
于 2012-07-20T03:22:44.607 回答
1

目前 ruby​​ 1.9 已经排序哈希但仍然不存在重新排序功能。

您可以尝试对数组对进行排序,然后创建一个新的哈希。像这样

user = {}
user['shapeshifter'] = {:age => '25', :country => 'Australia'}
user['user2'] = {:age => '29', :country => 'Australia'}
user['user3'] = {:age => '21', :country => 'Russia'}

result1 = user.sort { |user1, user2|
  user1[1][:key] <=> user2[1][:key] # user1,2 = [key, value] from hash
}
puts Hash[result1].inspect

or this

result2 = user.sort_by { |user_key, user_val|
  user_val[:key]
}
puts Hash[result2].inspect
于 2012-07-20T03:48:55.520 回答