Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby排序一个散列,获得排名_Ruby_Sorting_Hash - Fatal编程技术网

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(“圣地亚哥”)放在一起,如果你尝试这个方法,你会发现每次索引都会不同。