代码之家  ›  专栏  ›  技术社区  ›  Bruce Lin

ruby排序一个hash,得到排名

  •  0
  • Bruce Lin  · 技术社区  · 13 年前

    存在作为关键字的城市名称的散列和作为值的对应索引,

    "Los Angeles" => 2.5
    "San Francisco" => 3.6
    "San Diego" => 2.4
    .
    .
    .
    

    现在我想按值对哈希进行排序,这样它就会变成

    "San Diego" => 2.4    
    "Los Angeles" => 2.5
    "San Francisco" => 3.6
    .
    .
    .
    

    我需要得到整个哈希中每个哈希条目的排名。例如,对于洛杉矶,它将返回2。

    有什么建议吗?

    2 回复  |  直到 13 年前
        1
  •  4
  •   gtgaxiola    13 年前

    尝试 sort_by{|k,v| v}

    cities = {"Los Angeles" => 2.5, "San Francisco" => 3.6, "San Diego" => 2.4 }
    cities.sort_by {|key, value| value}
    

    然后(我想)索引就变成了秩

        2
  •  -1
  •   Josh    13 年前

    这将为您提供给定城市的排名:

    cities.keys.sort.index("Los Angeles") + 1
      #=> 1 
    

    指数从0开始,所以我在答案中加了1,给你一个从1开始的排名。