将数组的Ruby数组转换为哈希

     2023-03-29     225

关键词:

【中文标题】将数组的Ruby数组转换为哈希【英文标题】:Converting Ruby array of array into a hash 【发布时间】:2021-11-25 16:40:03 【问题描述】:

我有一个数组如下:

[
  ["2021-07-26T11:38:42.000+09:00", 1127167],
  ["2021-08-26T11:38:42.000+09:00", 1127170],
  ["2021-09-26T11:38:42.000+09:00", 1127161],
  ["2021-07-25T11:38:42.000+09:00", 1127177],
  ["2021-08-27T11:38:42.000+09:00", 1127104]
]

我想要的输出:


  "2021-July" => [["2021-07-26T11:38:42.000+09:00", 1127167],["2021-07-25T11:38:42.000+09:00", 1127177]], 
  "2021-August" => [["2021-08-26T11:38:42.000+09:00", 112717],["2021-08-27T11:38:42.000+09:00", 112710]],  
  "2021-September" => ["2021-09-26T11:38:42.000+09:00", 112716]

我想根据每个数组元素中的日期值创建哈希键year-month 格式。最简单的方法是什么?

【问题讨论】:

【参考方案1】:

使用group_by

date_array = [["2021-07-26T11:38:42.000+09:00", 1127167],["2021-08-26T11:38:42.000+09:00", 112717],["2021-09-26T11:38:42.000+09:00", 112716],["2021-07-25T11:38:42.000+09:00", 1127177],["2021-08-27T11:38:42.000+09:00", 112710]]
result = date_array.group_by |e| Date.parse(e.first).strftime("%Y-%B") 

【讨论】:

【参考方案2】:
date_array = [["2021-07-26T11:38:42.000+09:00", 1127167],["2021-08-26T11:38:42.000+09:00", 112717],["2021-09-26T11:38:42.000+09:00", 112716],["2021-07-25T11:38:42.000+09:00", 1127177],["2021-08-27T11:38:42.000+09:00", 112710]]

result_date_hash = Hash.new([])

date_array.each do |date|
  formatted_date = Date.parse(date.first).strftime("%Y-%B")
  result_date_hash[formatted_date] += date
end

输出:

puts result_date_hash 
 => 
"2021-July"=>["2021-07-26T11:38:42.000+09:00", 1127167, "2021-07-25T11:38:42.000+09:00", 1127177],
 "2021-August"=>["2021-08-26T11:38:42.000+09:00", 1127170, "2021-08-27T11:38:42.000+09:00", 1127104],
 "2021-September"=>["2021-09-26T11:38:42.000+09:00", 1127161] 

【讨论】:

看起来可以通过group_by one-liner 实现 小心,result_date_hash = Hash.new([]) 几乎从来都不是您想要的,它只在这里有效,因为您使用a += e 将元素添加到数组中并且+= 复制了a。你真的应该说result_date_hash = Hash.new |h, k| h[k] = []

ruby将哈希值转换为排序的字符串数组,以便与另一个哈希值进行比较(代码片段)

查看详情

在Ruby中将数组转换为哈希的最佳方法是啥

】在Ruby中将数组转换为哈希的最佳方法是啥【英文标题】:WhatisthebestwaytoconvertanarraytoahashinRuby在Ruby中将数组转换为哈希的最佳方法是什么【发布时间】:2010-09-0713:30:00【问题描述】:在Ruby中,给定以下形式之一的数组...[apple,1,... 查看详情

Rails:如何将对象数组的哈希转换为 json

】Rails:如何将对象数组的哈希转换为json【英文标题】:Rails:Howtoconverthashofarrayofobjectstojson【发布时间】:2021-12-0316:20:18【问题描述】:我是一名java和Js开发人员,所以我对rails和ruby​​完全陌生。在我的一个项目中,我使用rail... 查看详情

如何将 yaml 文件解析为 ruby​​ 哈希和/或数组?

】如何将yaml文件解析为ruby​​哈希和/或数组?【英文标题】:Howtoparseayamlfileintorubyhashsand/orarrays?【发布时间】:2011-03-2917:47:13【问题描述】:我需要将yaml文件加载到哈希中,我该怎么办?【问题讨论】:请更新您选择的答案... 查看详情

ruby 将数组转换为函数参数

】ruby将数组转换为函数参数【英文标题】:rubyconvertarrayintofunctionarguments【发布时间】:2013-02-0405:20:11【问题描述】:假设我有一个数组。我希望将数组传递给函数。然而,该函数需要两个参数。有没有办法即时将数组转换为2个... 查看详情

Perl,将数字键哈希转换为数组

】Perl,将数字键哈希转换为数组【英文标题】:Perl,convertnumerically-keyedhashtoarray【发布时间】:2011-02-2320:04:45【问题描述】:如果我在Perl中有一个包含完整和连续整数映射的哈希(即,从0到n的所有键都映射到某个东西,除此之... 查看详情

ruby将数组转为哈希(代码片段)

查看详情

如何将哈希值转换为数组

】如何将哈希值转换为数组【英文标题】:Howtoconvertvaluesofhashintoarray【发布时间】:2021-11-0111:05:10【问题描述】:我必须将弹性搜索结果解析为特定格式。为此,我需要将搜索结果哈希值放入数组我有这个:hash="ABC":"attributes":"id... 查看详情

Ruby .store 函数将哈希值从数组更改为单个值

】Ruby.store函数将哈希值从数组更改为单个值【英文标题】:Ruby.storefunctionchangeshashvaluesfromarraytosinglevalue【发布时间】:2021-04-2116:08:18【问题描述】:我正在尝试创建一个哈希,其中键是数字,值是来自两个数组的计数的数组[0,0]... 查看详情

在Ruby中将嵌套哈希键从CamelCase转换为snake_case

...更Rubyish格式时遇到问题。JSON包含多层嵌套,包括哈希和数组。我想要做的是将所有键递归转换为s 查看详情

ruby 将多维数组转换为一个数组

】ruby将多维数组转换为一个数组【英文标题】:rubyconvertmultidimensionalarrayintoonearray【发布时间】:2017-04-1323:14:05【问题描述】:我已经合并了2个列表。list1=customer.links.where(ext:true).group(:link_id,:external).limit(100).order(\'count_iddesc\').cou... 查看详情

如何将 ActiveRecord 结果转换为哈希数组

】如何将ActiveRecord结果转换为哈希数组【英文标题】:HowtoconvertActiveRecordresultsintoanarrayofhashes【发布时间】:2013-03-0321:41:21【问题描述】:我有一个查找操作的ActiveRecord结果:tasks_records=TaskStoreStatus.find(:all,:select=>"task_id,store_nam... 查看详情

Ruby 哈希组合

...个选项都有一系列选项)转换为代表这些选项组合的散列数组。例如:#Input::color=>["blue","grey"],:size=>["s","m","l"]#Output:[:color=>"blue",:size=>"s",: 查看详情

将 CSV 文件转换为哈希数组

】将CSV文件转换为哈希数组【英文标题】:ConvertCSVfileintoarrayofhashes【发布时间】:2012-12-2109:48:26【问题描述】:我有一个csv文件,一些曲棍球数据,例如:09.09.2008,1,HCVitkoviceSteel,BKMladaBoleslav,1:0(PP)09.09.2008,1,HCLasselsbergerPlzen,RIOKNAZL... 查看详情

Ruby 1.9:将字节数组转换为具有多字节 UTF-8 字符的字符串

】Ruby1.9:将字节数组转换为具有多字节UTF-8字符的字符串【英文标题】:Ruby1.9:ConvertbytearraytostringwithmultibyteUTF-8characters【发布时间】:2011-05-2421:39:42【问题描述】:我正在尝试在Ruby中找到一种方法来获取UTF-8字节数组并将其转换... 查看详情

Ruby 将对象转换为哈希

】Ruby将对象转换为哈希【英文标题】:RubyconvertObjecttoHash【发布时间】:2011-06-2904:03:48【问题描述】:假设我有一个带有@name="book"和@price=15.95的Gift对象。将其转换为Ruby中的Hashname:"book",price:15.95而不是Rails的最佳方... 查看详情

哈希表

一、简介如果所有的键都是小整数,那么我们可以用一个数组来实现无序的符号表,将键作为数组的索引i而数组中i(键)处储存的就是对应的值。这样就可以快速地访问任意键的值,哈希表是这种简易方法的拓展并能够处理更... 查看详情

将 Ruby 哈希转换为 YAML

】将Ruby哈希转换为YAML【英文标题】:ConvertRubyHashintoYAML【发布时间】:2013-07-0817:26:55【问题描述】:我需要将下面提供的哈希转换为可读的YAML。看起来我可以提供YAML::load一个字符串,但我想我需要先将它转换成这样的:hostname1... 查看详情