根据给定值构造新的哈希值

2023-12-19

我似乎迷失了尝试实现以下目标,我尝试了一整天,请帮助

I HAVE

h = {
    "kv1001"=> {
      "impressions"=>{"b"=>0.245, "a"=>0.754},
      "visitors"   =>{"b"=>0.288, "a"=>0.711},
      "ctr"        =>{"b"=>0.003, "a"=>0.003},
      "inScreen"=>{"b"=>3.95, "a"=>5.031}
    },
    "kv1002"=> {
      "impressions"=>{"c"=>0.930, "d"=>0.035, "a"=>0.004, "b"=>0.019,"e"=>0.010},
      "visitors"=>{"c"=>0.905, "d"=>0.048, "a"=>0.005, "b"=>0.026, "e"=>0.013},
      "ctr"=>{"c"=>0.003, "d"=>0.006, "a"=>0.004, "b"=>0.003, "e"=>0.005},
      "inScreen"=>{"c"=>4.731, "d"=>4.691, "a"=>5.533, "b"=>6.025, "e"=>5.546}
    }
}

MY GOAL

{
    "segment"=>"kv1001=a",
    "impressions"=>"0.754",
    "visitors"=>"0.711", 
    "inScreen"=>"5.031",
    "ctr"=>"0.003"
}, {
    "segment"=>"kv1001=b", 
    "impressions"=>"0.245", 
    "visitors"=>"0.288", 
    "inScreen"=>"3.95",
    "ctr"=>"0.003"
}, {
    "segment"=>"kv1002=a", 
    "impressions"=>"0.004" 
    #... etc
}

我的目标是使用“kv1001=a”(即散列中的字母)创建一个散列,并分配诸如展示次数、访问者等键。示例“我的目标”的格式如下 因此格式类型“kv1001=a”必须从哈希本身构造,a是哈希中的字母。

我现在已经解决了这个问题

`data_final = []
h.each do |group,val|
  a = Array.new(26){{}}
  val.values.each_with_index do |v, i|
    keys = val.keys
    segment_count = v.keys.length
    (0..segment_count-1).each do |n|
      a0 = {"segment" => "#{group}=#{v.to_a[n][0]}", keys[i] => v.to_a[n][1]}
      a[n].merge! a0
      if a[n].count > 4
        data_final << a[n]
      end
    end
  end
end`

这是一个更简单的版本

h.flat_map do |segment, attrs| 
  letters = attrs.values.flat_map(&:keys).uniq
  # create a segment entry for each unique letter
  letters.map do |letter|
    seg = {"segment" => "#{segment}=#{letter}"}
    seg.merge Hash[attrs.keys.map {|key| [key,attrs[key][letter]]}]
  end
end

Output:

[{"segment"=>"kv1001=b",
  "impressions"=>0.245,
  "visitors"=>0.288,
  "ctr"=>0.003,
  "inScreen"=>3.95},
 {"segment"=>"kv1001=a",
  "impressions"=>0.754,
  "visitors"=>0.711,
  "ctr"=>0.003,
  "inScreen"=>5.031},
 {"segment"=>"kv1002=c",
  "impressions"=>0.93,
  "visitors"=>0.905,
  "ctr"=>0.003,
  "inScreen"=>4.731},
 {"segment"=>"kv1002=d",
  "impressions"=>0.035,
  "visitors"=>0.048,
  "ctr"=>0.006,
  "inScreen"=>4.691},
 {"segment"=>"kv1002=a",
  "impressions"=>0.004,
  "visitors"=>0.005,
  "ctr"=>0.004,
  "inScreen"=>5.533},
 {"segment"=>"kv1002=b",
  "impressions"=>0.019,
  "visitors"=>0.026,
  "ctr"=>0.003,
  "inScreen"=>6.025},
 {"segment"=>"kv1002=e",
  "impressions"=>0.01,
  "visitors"=>0.013,
  "ctr"=>0.005,
  "inScreen"=>5.546}]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据给定值构造新的哈希值 的相关文章

  • 在 ruby​​ 中创建登录会话时理解“current_user”概念

    我正在阅读很棒的 Michael Hartl 教程来构建 ruby 应用程序here http ruby railstutorial org chapters sign in sign out sec 3acurrent user 我试图理
  • URL 路由中的点与命名空间 Rails 3.1

    我有这个路线 rb root to gt posts index devise for users controllers gt omniauth callbacks gt users omniauth callbacks resource
  • 捆绑包安装无法离线工作

    我得到了这个问题 我想已经安装了捆绑器 因为我无法在 RoR 中创建应用程序时捆绑安装 也无法直接在项目中捆绑安装 如果您遇到任何问题并找到解决方案 请帮助我 enter code here run bundle install Fetch
  • RSpec 2 中使用 OR 相等

    下面这个例子的正确写法是什么 玩家的分数应等于 5 或 8 it should equal 5 or 8 do player score should 5 or 8 end Thanks Tim 5 or 8将始终产生结果 5 并且不会执行
  • 保护 REST 和 JSON

    我想利用 RESTful 架构构建提供 JSON 数据的 Web 服务 但我只想要我自己的客户端应用程序可以从我的网络服务请求 基本上 我的 Web 服务包含不供公众使用的敏感数据 但我想以这种方式构建它 以便我可以构建连接到我的 Web
  • Rails 3 分页,will_paginate 与 Kaminari

    我的设置 Rails 3 0 9 Ruby 1 9 2 我正在为我的应用程序寻找分页解决方案 发现有一个新的宝石Kaminari与值得信赖的人相比will paginate 看起来像will paginate有一段时间没有更新了 但后来又以
  • 用于 S3 私有文件的 ActiveStorage

    到目前为止 我一直在使用 Paperclip 将一些文件上传到 S3 其中一些文件不是公开的 Paperclip 允许通过以下位将一些文件作为私有文件上传 has attached file image styles large 2000x
  • Rails 中的助手 - 构建 html 字符串时的最佳方法是什么?

    我通常这样写助手 def bloco vazio texto btn args titulo content tag h3 Vazio p content tag p texto content tag div titulo tag hr
  • 添加两个 ActiveRecord::Relation 对象[重复]

    这个问题在这里已经有答案了 如何将两个关系添加在一起 当我尝试 运算符时 它返回一个数组 但我需要它来返回关系 谢谢 麦克风 Try new relation relation merge another relation
  • Rails 4.1 环境变量未重新加载

    我创建了一个application yml文件在配置目录中并添加了一些键值对 即AWS REGION us east 1 我还添加了以下内容application rb读取文件并更新 ENV 哈希 if Rails env developm
  • 由于 MIME 类型不受支持,拒绝应用样式

    我不断收到一条错误消息 指出 MIME 类型 text html 不可执行或不是受支持的样式表 MIME 类型 并且启用了严格的 MIME 检查 我的链接代码是
  • 如何从数组中提取特定元素?

    如果我有一个数组a 1 2 3 4 5 6 7 8 9 10 我想要这个数组的一个子集 第 1 个 第 5 个和第 7 个元素 是否可以通过简单的方式从该数组中提取这些内容 我在想这样的事情 a 0 4 6 1 5 7 但这行不通 还有一种
  • 如何使用国家宝石

    我正在尝试使用国家宝石 https github com hexorx countries 但是在我捆绑安装这个 gem 后 有一些关于如何合并它的基本问题 我是否需要创建新的控制器 模型才能访问这些国家 地区 如何创建一个简单的选择下拉列
  • 在 C# 中使用 SHA1 算法进行哈希处理

    我想哈希给定byte 数组与使用SHA1算法与使用SHA1Managed The byte 哈希值将来自单元测试 预期的哈希值是0d71ee4472658cd5874c5578410a9d8611fc9aef 区分大小写 我怎样才能实现这个
  • 更改 Active Storage 的默认 URL

    我们可以更改从活动存储创建的默认 永久 url 以重定向到 S3 类似于rails active storage representations 我不喜欢网址中的框架名称 Thanks UPDATE 最近 Rails 6 中增加了一个可配置
  • 如何将 devise/omniauth 重定向到我登录的页面?

    我通过omniauth 进行了身份验证 并且该链接通过layout application html haml 在每个页面上都可用 然而 当他们完成omniauth身份验证后 他们都会进入root权限 我如何设置它 以便他们重定向到他们单击
  • Rails 4 可安装引擎,找不到文件“jquery”

    我正在创建一个 Rails 可安装引擎插件 它使用 gem jquery rails 我在 gemspec 文件中添加了这段代码 s add dependency jquery rails gt 3 0 1 and run bundle i
  • 如何使用sunspot_rails gem 搜索相关文章

    我有一个迷你博客应用程序 我希望用户查看与他们在文章显示页面中阅读的内容相关的文章 没有 sunspot rails gem 我会做这样的事情 在我的模型中 def self related search query join AND fi
  • ArgumentError:Ruby 中的参数数量错误

    试图解决这个问题 class Person def initialize name name name end def greet other name puts Hi other name my name is name end end
  • 子域中的 Rails url 助手 - 删除子域

    我网站上的用户可以拥有子域 例如 他们的页面网址是 name example com 登录的用户可以查看更多用户信息 因此在用户的显示页面上 我有一个使用以下代码生成的链接 user url user subdomain gt false

随机推荐