散列数组,如何计算具有最独特“页面”视图的“网页”列表?

问题描述 投票:0回答:1

我试图按顺序显示最独特的网页浏览量,但不确定如何显示。我有数据变量:

data = [{"help_page/1"=>"126.318.035.038"},
 {"contact"=>"184.123.665.067"},
 {"home"=>"184.123.665.067"},
 {"about/2"=>"444.701.448.104"},
 {"help_page/1"=>"929.398.951.889"},
 {"index"=>"444.701.448.104"},
 {"help_page/1"=>"722.247.931.582"},
 {"about"=>"061.945.150.735"},
 {"help_page/1"=>"646.865.545.408"},
 {"home"=>"235.313.352.950"},
 {"help_page/1"=>"543.910.244.929"},
 {"home"=>"316.433.849.805"},
 {"contact"=>"543.910.244.929"}]

我尝试过这样的事情:

data.sort_by {|k, v| -v.uniq.count}.collect{|k, v| "#{k}\t#{v.uniq.count} #{'unique views', v.uniq.count}"}

我正在尝试获得与以下内容类似的结果:

/help_page/1    XX unique views
/contact    XX unique views
/home   XX unique views
/index  XX unique views
/about/2    XX unique views
/about  XX unique views

但没有成功。

arrays ruby hash unique-key
1个回答
0
投票
Enumerable#group_by是您的朋友,下面的所有内容都只是格式化输出。

data.group_by do |h| h.to_a.first.first end.map do |k, v| [k, v.count] end.sort_by(&:last).reverse.to_h #⇒ {"help_page/1"=>5, # "home"=>3, # "contact"=>2, # "about"=>1, # "index"=>1, # "about/2"=>1}

© www.soinside.com 2019 - 2024. All rights reserved.