Arrays 哈希数组,如何计算具有最独特“页面”视图的“网页”列表?
我试图按顺序显示最独特的页面视图,但不确定如何显示。我有一个包含数据的变量:Arrays 哈希数组,如何计算具有最独特“页面”视图的“网页”列表?,arrays,ruby,hash,unique-key,Arrays,Ruby,Hash,Unique Key,我试图按顺序显示最独特的页面视图,但不确定如何显示。我有一个包含数据的变量: 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.
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
但是没有成功。是您的朋友,下面的所有内容都只是格式化输出
data.group|U按do|h|
h、 首先,首先
end.map do | k,v|
[k,v.计数]
end.sort_by&:last.reverse.to_h
⇒ {help_page/1=>5,
主页=>3,
联系人=>2,
大约=>1,
指数=>1,
关于/2=>1}
我们可以使用v2.7中新增的方法:
data.map { |h| h.keys.first }.
tally.
sort_by { |_,count| -count }.
each { |k,v| puts "#{k} #{v} unique views" }
显示:
help_page/1 5 unique views
home 3 unique views
contact 2 unique views
about 1 unique views
index 1 unique views
about/2 1 unique views
步骤如下
a = data.map { |h| h.keys.first }
#=> ["help_page/1", "contact", "home", "about/2", "help_page/1",
# "index", "help_page/1", "about", "help_page/1", "home",
# "help_page/1", "home", "contact"]
b = a.tally
#=> {"help_page/1"=>5, "contact"=>2, "home"=>3, "about/2"=>1,
# "index"=>1, "about"=>1}
c = b.sort_by { |_,count| -count }
#=> [["help_page/1", 5], ["home", 3], ["contact", 2], ["about", 1],
# ["index", 1], ["about/2", 1]]
c.each { |k,v| puts "#{k} #{v} unique views" }
#=> <displays the results shown above>
很好,我喜欢理货的主意。还没有安装2.7yet@engineersmnky,有传闻说一个方法Enumerally_by正在工作中,相当于使用一个块进行计数,这将允许我们在这里通过{| h | h.keys.first}写入data.tally_。你可能会问,为什么tally没有一个可选的区块?接下来可能是Enumerabletally_-ho,用于猎狐应用程序。那么,我肯定会坚持Enumeratornext的别名为sally_,因为哈希数组的构造看起来不正确;它的笨拙和尴尬的使用,所以我怀疑这是一个XY的问题。看看它的构造是否更符合习惯,这样会更容易使用。