首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby -使用包含单个字段的其他数组中的项从元组数组中选择项

Ruby -使用包含单个字段的其他数组中的项从元组数组中选择项
EN

Stack Overflow用户
提问于 2019-04-14 22:41:18
回答 3查看 79关注 0票数 0

我使用Ruby并尝试选择存储在数组中的元组,使用其他数组中的项作为条件。

代码语言:javascript
复制
list = [{field1:value1,field2:valueA},...,{field1:valuen,field2:valueZ}]

criteria = [sel1,sel2,sel3,sel4,...]

使用field1==criteria[i] (criteria中的任何元素)创建新的元组数组(列表的子集)的最有效方法是什么?

我已经尝试过结合使用.each.find了吗?但这需要一段时间,因为列表是一个相当大的数组。

EN

回答 3

Stack Overflow用户

发布于 2019-04-14 23:10:01

代码语言:javascript
复制
# Set is more efficient than Array for this use-case
require 'set'
criteria = Set.new [sel1,sel2,sel3,sel4,...]

list = [{field1:value1,field2:valueA},...,{field1:valuen,field2:valueZ}]
result = list.select {|i| criteria.include? i[:field1] }
票数 0
EN

Stack Overflow用户

发布于 2019-04-14 23:17:57

我很想试试这个..。您可能想要做一些基准测试。

代码语言:javascript
复制
subset = list.select{ |h| (criteria & h.keys).any? }
票数 0
EN

Stack Overflow用户

发布于 2019-04-15 19:57:33

谢谢你vm。我两个都试过了,Igneus提出的解决方案似乎是最适合我的情况。在我的".each“循环中,它运行在不到1秒的i/o中,大约需要7分钟。太棒了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55676485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档