0

我有一个包含一组项目的列表,例如“学生 ID”、“姓名”、“地址”、“分数”、“徽章 ID”。如何使用不同的键从这个现有列表创建一个哈希表(将原始列表保留在单独的变量名中)?

我努力了

new_school=Hash.new(old_school)  // ruby

但我不知道如何将badge_ID 字段分配为哈希的新键。

我在这里先向您的帮助表示感谢

4

2 回答 2

1

另外,请注意您是否可能意味着为一个对象获取一组值并将它们转换为哈希值。像这样:

[123, 'Jim Bob', '123 Fake St', 90, 321]

进入这个:

{:student_id => 123,
  :name => 'Jim Bob',
  :address => '123 Fake St',
  :score => 90,
  :badge_id => 321}

如果是这样,你可以这样做:

keys = [:student_id, :name, :address, :score, :badge_id]
values = [123, 'Jim Bob', '123 Fake St', 90, 321]
Hash[*keys.zip(values).flatten]
于 2012-04-17T20:25:26.893 回答
1

您可以使用 ActiveSupport gem 将数组(或任何其他可枚举对象)转换为哈希:

objects.index_by do |object|
  <code to calculate the hash key>
end

objects.group_by do |object|
  <code to calculate the hash key>
end

#index_by 方法将从列表中生成散列单个对象的值,而 #group_by 方法将使散列值成为映射到该散列键的对象的数组

计算哈希键的代码可以像引用每个对象的属性一样简单。

于 2012-04-17T20:21:44.303 回答