【发布时间】:2016-06-01 23:30:52
【问题描述】:
我想找到一种将两个哈希合并在一起的有效方法,并且生成的哈希必须包含所有原始数据和一个新的键/值对,基于以下标准。两个散列之间没有共同的键,但是一个散列中的键与相邻散列中的键的值匹配。
还要注意,第二个哈希实际上是一个哈希数组。
我正在处理一个相对较大的数据集,因此正在寻找一种有效的解决方案,但希望同时保持代码的可读性,因为它可能最终会投入生产。
这是我的数据结构:
# Hash
hsh1 = { "devicename1"=>"active", "devicename2"=>"passive", "devicename3"=>"passive" }
# Array of Hashes
hsh2 = [ { "host" => "devicename3", "secure" => true },
{ "host" => "devicename2", "secure" => true },
{ "host" => "devicename1", "secure" => false } ]
这是我需要完成的工作:
我需要将hsh1 中的数据合并到hsh2 中,将所有原始键/值对保留在hsh2 中,并使用hsh1 中的数据添加一个名为activation_status 的新键。
生成的hsh2 如下:
hsh2 = [{ "host"=>"devicename3", "secure"=>true, "activation_status"=>"passive" },
{ "host"=>"devicename2", "secure"=>true, "activation_status"=>"passive" },
{ "host"=>"devicename1", "secure"=>false, "activation_status"=>"active" }]
这可能已经在 StackOverflow 上得到了回答,但我找了一段时间,找不到匹配项。如果这是重复的,我提前道歉。
【问题讨论】:
-
“大”是什么意思?只是粗略。 1000? 100万? 1000000000?
-
好问题,我考虑过限定它。用 Ruby 术语来说,我敢打赌它没有那么大。不到 10,000 个。
-
好的,那么一次全部保存在内存中应该没有问题。
-
我希望你不介意我编辑你的问题。我只是重新格式化以避免读者需要水平滚动。
-
谢谢卡里——一点也不 :)
标签: ruby