【发布时间】:2020-03-24 02:53:35
【问题描述】:
我有以下哈希数组作为输入:-
input =[
{"ID"=>"100", "Key"=>"Field A", "Value"=>"123"},
{"ID"=>"100", "Key"=>"Field B", "Value"=>"333"},
{"ID"=>"100", "Key"=>"Field C", "Value"=>"555"},
{"ID"=>"200", "Key"=>"Field A", "Value"=>"789"},
{"ID"=>"200", "Key"=>"Field B", "Value"=>"999"},
{"ID"=>"200", "Key"=>"Field D", "Value"=>"444"}
]
我想将这个哈希数组转换如下
output =[
{"ID"=>"100", "Field A"=>"123", "Field B"=>"333", "Field C" => "555", "Field D" => ""},
{"ID"=>"200", "Field A"=>"789", "Field B"=>"999", "Field C" => "", "Field D" => "444"}
]
我可以如下获取唯一 ID 和密钥
irb(main):099:0> unique_id = input.map { |p| p["ID"] }.uniq
=> ["100", "200"]
irb(main):100:0> unique_keys = input.map { |p| p["Key"] }.uniq
=> ["Field A", "Field B", "Field C", "Field D"]
但是,我无法继续为每个包含输入哈希中定义的键/值对的 ID 创建唯一的哈希数组。
【问题讨论】:
-
我在答案中添加了所有键,检查已编辑的答案。
-
所需的结构没有应有的用处。一个散列数组,其中“ID”在每个散列中是唯一的,可以更好地存储为单个散列。这个问题实际上看起来像一个 XY 问题,你在问如何做“Y”,但实际上应该问“X”。 “What is the XY problem?”。