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

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(使用前将#替换为@)

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

  • Windows 上的 ruby​​ 中出现 SSL 错误

    我收到以下错误 C Users user Desktop folder gt ruby exchange rate rb C Ruby23 x64 lib ruby 2 3 0 net http rb 933 in connect nonb
  • 安装heroku toolbelt后出现Ruby错误

    我正在 win 7 32 位系统上使用 Heroku 但我没有管理员权限 我已经下载并安装了heroku工具带如下http community webfaction com questions 11803 heroku toolbelt h
  • 使用 Python 对 CSV 进行 MD5 哈希处理

    我有一个包含电子邮件地址的 csv 需要以 MD5 格式进行哈希处理 然后将哈希后的电子邮件保存为新的 csv 我还没有看到我在 SO 上的确切用例 也无法成功修改现有问题 原始文件路径为 Users username Downloads
  • before_filter set_locale 除了控制器

    My routes rb MyApp Application routes draw do scope locale do all resources here end namespace blog do resources posts o
  • 尝试安装 Rails 时,执行 gem ... (Gem::RemoteFetcher::FetchError) 503 错误

    这是当我尝试使用 Ruby 2 1 1 和 RVM 执行 gem install Rails v 4 1 0 时出现的错误 错误 执行 gem 时 Gem RemoteFetcher FetchError 错误 响应服务不可用 503 ht
  • 设计没有路由与指定删除的链接中的 [GET]“/users/sign_out”匹配

    因此 我四处寻找解决此问题的方法 大多数人似乎都说了同样的话 但对解决我的问题没有多大作用 我已在链接中指定了删除方法 但路由错误表明这是一个 GET 请求 知道为什么下面的链接最终会覆盖 忽略方法声明吗 Routes devise for
  • 如何在 ruby​​ on Rails 中的 haml 内的 js 设置会话变量?

    我通过 js 有表行着色 针对行组 我想让它通过会话变量记住阴影 我正在使用的 haml 部分有 Group Shading a href gt id gt row colors on On a href gt id gt row colo
  • Ruby:如何将多个方法调用与“发送”链接在一起

    必须有一种内置的方法来做到这一点 对吧 class Object def send chain arr o self arr each a o o send a return o end end 我刚刚遇到了这个 它确实需要注入 def s
  • 聚类算法采用哪种编程结构

    我正在尝试实现以下 分裂 聚类算法 下面是该算法的简短形式 完整的描述可用here https dl dropboxusercontent com u 540963 diana pdf 从样本 x i 1 n 开始 将其视为由 n 个数据点
  • ruby require 问题(与 $LOAD_PATH 有关)

    我正在尝试使用我刚刚安装的 gem 通过sudo gem install excelsior 像这样 需要 红宝石 要求 精益求精 这在 irb 中工作得很好 但是当我将完全相同的代码粘贴到 rb 文件中并尝试使用 ruby 运行它时 我得
  • 获取类别和子类别的所有产品(rails、awesome_nested_set)

    正在开发一个电子商务应用程序 我试图解决以下问题 我通过 Awesome nested set 插件实现了我的类别 如果我通过选择一个类别列出我的文章 一切正常 但对于某些链接 我想显示一个类别的所有产品及其子类别的产品 这是仅适用于一种类
  • 国家/地区的下拉菜单

    您好 我想为国家和州实现下拉菜单 州下拉列表应根据所选国家 地区更改其值 有没有任何插件或 gem 可以在 Rails 中执行此操作 尝试卡门插件 http autonomousmachine com posts 2009 4 1 carm
  • Twitter Bootstrap Modal 无法在 Rails 中工作

    我还很新Rails and to twitter bootstrap 我正在研究模态 但我收到了 NoMethodError 未定义的方法 渲染 当我删除 代码来自my release js erb页面 它消失但没有窗口出现 另外 还有错误
  • 在 Rails 中使用 config.assets.precompile 将资源包含在子目录中

    我有一个在 Heroku 上运行的 Rails 3 1 3 应用程序 通过 S3 进行资产托管asset sync 包含在我的app assets css目录是一个包含两个文件的子目录 main css scss and categorie
  • 导轨、定制探测器

    所以我希望能够使用来获取一个对象find by id or name 我觉得我看到了另一个这样的问题 但很难找到任何资源来制作我自己的查找器 您可以通过向模型添加类方法来做到这一点 例如 class Model lt ActiveRecor
  • ActiveRecord 和关联排序

    我有一个像这样的简单 AR 关联 Question has many answers Answer belongs to question with question id int 11 NOT NULL is accepted tinyi
  • 加载新的 Turbo Frame 时如何执行 JavaScript

    我在 Rails 应用程序中使用 Turbo Frames 并且在每个页面上都有
  • 哈米尔评论结束

    我是哈米尔新手 这让我很困惑 我不喜欢删除可以注释掉的代码 但我不知道如何在 haml 中正确结束注释 这是一个代码片段 field f label member id br f text field member id field f l
  • 安装适用于 Windows 7 的 Ruby on Rails(最新)

    我是一名设计师 而不是一名编码员 并且在首次安装时遇到了问题 我下载了 Rails 1 8 6 和 Instant Rails 我打开控制台并尝试更新 gem 那里没有任何作用 我想我会删除所有内容并重新开始 因为我确信我现在破坏了某些东西
  • RVM 要求错误

    我安装了 OS X Mavericks 并且正在尝试运行rvm requirements在终端中 它给了我这个错误 Installing required packages autoconf automake libtool pkgconf

随机推荐