【发布时间】:2015-04-16 06:26:32
【问题描述】:
我有一个哈希,我需要将其与哈希数组进行比较。
例如:
# Array of Hashes to compare another hash against
@stored_hash = [
{:a => 1, :b => 2, :c => {:d => 3, :e => 4, :f => 5}},
{:a => 1, :b => 2, :c => {:d => 3, :e => 4, :f => 5}},
{:a => 1, :b => 2, :c => {:d => 3, :e => 4, :f => 5}},
]
# Hash to compare to Array of Hashes
@sample_hash = {:d => 3, :e => 4, :f => 5}
我正在寻找来自@sample_hash 的与来自所有@stored_hashes 的任何键相匹配的键
我可以像这样将单个哈希与另一个哈希进行比较
res = @sample_hash.keys.select { |k| @stored_hash.key?(k) }
但我无法让它适用于哈希数组。帮助表示赞赏。
编辑
这是我迄今为止尝试过的。
res = @sample_hash.keys.select { |k| @stored_hash.map(&:keys).include?(k) }
这似乎只是让程序停止(我正在处理一个非常大的数据集)
我也试过这个:
res = @sample_hash.keys.select { |k| @stored_hash.map { |x| x.key?(k) } }
返回结果,但如果我做相反的事情:
res = @sample_hash.keys.reject { |k| @stored_hash.map { |x| x.key?(k) } }
我没有得到任何结果(我知道哈希中既有公共键也有非公共键)
【问题讨论】:
-
您能否向我们展示您的尝试,以便我们帮助您编写代码?
-
@SimoneCarletti 我对我的问题进行了编辑。
-
也许您可以为示例数据添加一些预期的输出?
标签: ruby