ruby排序一个散列,获得排名
城市名称的散列作为键,相应的索引作为值ruby排序一个散列,获得排名,ruby,sorting,hash,Ruby,Sorting,Hash,城市名称的散列作为键,相应的索引作为值 "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 有什么建议吗?试试
"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
有什么建议吗?试试
按{k,v}排序
cities = {"Los Angeles" => 2.5, "San Francisco" => 3.6, "San Diego" => 2.4 }
cities.sort_by {|key, value| value}
然后(我想)索引成为秩Try
sort_by{k,v | v}
cities = {"Los Angeles" => 2.5, "San Francisco" => 3.6, "San Diego" => 2.4 }
cities.sort_by {|key, value| value}
指数变成了排名(我想)这将给出给定城市的排名:
cities.keys.sort.index("Los Angeles") + 1
#=> 1
索引从0开始,因此我在答案中添加了1,以给出从1开始的排名。这将给出给定城市的排名:
cities.keys.sort.index("Los Angeles") + 1
#=> 1
索引从0开始,因此我在答案中添加了1,以给您一个从1开始的排名。
排序依据(&:last)
可能更可读,也可能不可读,这取决于您的同事是否了解可枚举的工作方式。您可以将其包装在散列[]
以实际获取散列而不是数组。如果您使用的是ruby 1.8,将其转换回散列将破坏ordering@BruceXindaLincities.keys[index]cities={“洛杉矶”=>2.5,“旧金山”=>3.6,“圣地亚哥”=>2.4}城市。按{键,值}排序放入城市。keys.index(“洛杉矶”)放入cities.keys.index(“旧金山”)放置cities.keys.index(“圣地亚哥”)如果您尝试此操作,您会发现每次索引都会不同。排序方式(&:last)
可能更可读,也可能不可读,这取决于您的同事是否了解可枚举
的工作原理。您可以将其包装在散列[]
以实际获取散列而不是数组。如果您使用的是ruby 1.8,将其转换回散列将破坏ordering@BruceXindaLincities.keys[index]cities={“洛杉矶”=>2.5,“旧金山”=>3.6,“圣地亚哥”=>2.4}cities.sort_by{key,value{value}放置cities.keys.index(“洛杉矶”)放置cities.keys.index(““旧金山”)将cities.keys.index(“圣地亚哥”)放在一起,如果你尝试这个方法,你会发现每次索引都会不同。