用于保存禁止对列表的最有效数据结构

问题描述 投票:0回答:1

我正在Ruby中实现团队分配算法,并且必须要实现以下功能:在提供功能的情况下,这些学生的ID对应该将这些学生分组在一起。

最有效的结构是什么?

我想到的是哈希,其中的键是学生ID,值是一个数组,其中包含无法将特定学生分组的所有学生的ID。例如,如果CSV文件具有以下内容:

3,4
3,6
3,8
4,7
4,1
5,2 

我想获得以下哈希:

{3=>[4,6,8], 4 =>[7,1], 5 =>[2]}

但是,我想不出一种有效的方法来用CSV文件中的信息填充哈希。该文件每行有两个值。此后最重复的操作是检查给定学生的禁忌人列表中是否存在给定ID。

ruby data-structures hash
1个回答
2
投票
这应该为您工作:

require 'CSV' csv_string = %q(3,4 3,6 3,8 4,7 4,1 5,2 ) CSV.parse(csv_string, converters: :numeric) .group_by(&:first) .transform_values { |values| values.map(&:last) }

© www.soinside.com 2019 - 2024. All rights reserved.