按字符串长度和相关磅进行排序

时间:2012-11-30 14:34:51

标签: ruby sorting

我有一个令人不安的案例:我想对具有相关权重的字符串列表进行排序,例如:

@array = [{0 => "string"}, {0 => "my string"}, {2 => "my very long string which I want to match"}]

排序的结果应该是:

{2 => "my very long string which I want to match"}
{0 => "my string"}
{0 => "string"}

第一个元素是非常长的字符串,因为差异pound / string.length与其他元素的比例更高。

我尝试按重量分组排序,然后按字符串排序,但它不起作用。我也尝试计算比率,但我仍然没有得到正确的有序列表。

非常感谢您的回答。

1 个答案:

答案 0 :(得分:2)

@array.sort_by do |h| 
  pound, string = h.first
  -pound.to_f / string.length
end
#=> [{2=>"my very long string which I want to match"}, {0=>"my string"}, {0=>"string"}]