如何将哈希值转换为数组

Posted

技术标签:

【中文标题】如何将哈希值转换为数组【英文标题】:How to convert values of hash into array 【发布时间】:2021-11-01 11:05:10 【问题描述】:

我必须将弹性搜索结果解析为特定格式。为此,我需要将搜索结果哈希值放入数组 我有这个:

hash = 
  "ABC": 
    "attributes": 
      "id": "1",
      "from": "test",
      "to": "something",
    
  ,
  "XYZ": 
    "attributes": 
      "id": "1",
      "from": "value",
      "to": "another value",
    
  

我想解决这个问题:

"ABC": [
       
    "attributes": 
      "id": "1",
      "from": "test",
      "to": "something",
                  
      ],
"XYZ": [
       
    "attributes": 
      "id": "1",
      "from": "value",
      "to": "another value",
                  
     
     ]

简单地说,哈希值应该是数组。请有人指导我。

【问题讨论】:

“and I want to get this:”后面的代码无效。我假设您想要一个哈希,在这种情况下,您需要在开头添加 并在末尾添加 【参考方案1】:
print items.transform_values  |item| [item] 

【讨论】:

虽然此代码可以回答问题,但提供有关 如何 和/或 为什么 解决问题的附加上下文将改善答案的长期价值。【参考方案2】:

你可以试试这个。

hashmap.each  |key, value| hashmap[key] = [hashmap[key]] 

在哪里, hashmap 包含您的原始哈希。

【讨论】:

有更好的方法,例如transform_values,不会改变原始哈希。【参考方案3】:

输入

hash = 
  "ABC": 
    "attributes": 
      "id": "1",
      "from": "test",
      "to": "something",
    
  ,
  "XYZ": 
    "attributes": 
      "id": "1",
      "from": "value",
      "to": "another value",
    
  

代码

p hash.transform_values  |value| [value] 

输出

:ABC=>[:attributes=>:id=>"1", :from=>"test", :to=>"something"], :XYZ=>[:attributes=>:id=>"1", :from=>"value", :to=>"another value"]

【讨论】:

以上是关于如何将哈希值转换为数组的主要内容,如果未能解决你的问题,请参考以下文章

将数组值转换为哈希键

将哈希数组转换为数组

将带有整数的数组转换为散列哈希值[closed]

如何将哈希码对象值转换为字符串变量

如何将数组附加为哈希值

将哈希表转换为 OCaml 中的对列表(键、值)