如何将文件中的元素放入哈希表中?-Ruby

3

我有一个文件的形式为:

Key1   Value1
Key2   Value2
Key3   Value3

用制表符分隔。我的问题是如何打开此文件并将其放入哈希表中?我已经尝试过:

 fp = File.open(file_path)

 fp.each do |line|
   value = line.chomp.split("\t")
   hash = Hash[*value.flatten]
 end

但是在这个循环的末尾,@datafile哈希表只包含最新的条目...我有点想要全部的内容.....

2个回答

8
使用hash[key] = value来添加新的键值对。使用hash.update(otherhash)将otherhash中的键值对添加到hash中。
如果你执行hash = foo,则会重新分配hash,丢失旧内容。
因此,在您的情况下,您可以这样做:
hash = {}
File.open(file_path) do |fp|
  fp.each do |line|
    key, value = line.chomp.split("\t")
    hash[key] = value
  end
end

不要忘记在 File.open 块之前实例化哈希 (hash = {}),否则在最后的 end 语句之后它将不可用。 - glenn jackman

0

应用https://dev59.com/vW855IYBdhLWcg3w1oA8#4120285中的答案:

hash = Hash[*File.read(file_path).split("\t")]

这将扩展为

hash = Hash["Key1", "Value1", "Key2", "Value2", "Key3", "Value3"]

为了更加健壮,可以将"\t"替换为/\s+/(以允许任何类型的空格)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接