gpt4 book ai didi

ruby - 如何过滤哈希数组以仅获取另一个数组中的键?

转载 作者:数据小太阳 更新时间:2023-10-29 06:26:15 26 4
gpt4 key购买 nike

我正在尝试为数组中的每个散列获取键的子集。

哈希实际上要大得多,但我认为这更容易理解:

[
{
id:2,
start: "3:30",
break: 30,
num_attendees: 14
},
{
id: 3,
start: "3: 40",
break: 40,
num_attendees: 4
},
{
id: 4,
start: "4: 40",
break: 10,
num_attendees: 40
}
]

我只想获取 idstart 值。

我试过:

return_keys = ['id','start']
return_array = events.select{|key,val| key.to_s.in? return_keys}

但这会返回一个空数组。

最佳答案

这应该做你想做的:

events.map do |hash|
hash.select do |key, value|
[:id, :start].include? key
end
end

可能更快(但不太漂亮)的解决方案:

events.map do |hash|
{ id: hash[:id], start: hash[:start] }
end

如果您需要return_keys 是动态的:

return_keys = [:id, :start]
events.map do |hash|
{}.tap do |new_hash|
return_keys.each do |key|
new_hash[key] = hash[key]
end
end
end

请注意,在您的代码中,select数组 中挑选元素,因为这是您调用它的地方,但不会更改包含在数组。

如果您关心性能,我已经对此处列出的所有解决方案进行了基准测试 (code):

                user     system      total        real
amarshall 1 0.140000 0.000000 0.140000 ( 0.140316)
amarshall 2 0.060000 0.000000 0.060000 ( 0.066409)
amarshall 3 0.100000 0.000000 0.100000 ( 0.101469)
tadman 1 0.140000 0.010000 0.150000 ( 0.145489)
tadman 2 0.110000 0.000000 0.110000 ( 0.111838)
mu 0.130000 0.000000 0.130000 ( 0.128688)

关于ruby - 如何过滤哈希数组以仅获取另一个数组中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9538090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com