如何将文件的元素放入哈希? -ruby

所以我有一个文件forms:

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 

但是在这个循环结束时,@ datata散列只包含最新的条目……我有点想要它……

hash[key] = value添加新键值对的值。 hash.update(otherhash)hash.update(otherhash)的键值对添加到hash中。

如果你做hash = foo ,你重新分配哈希,丢失旧内容。

因此,对于您的情况,您可以:

 hash = {} File.open(file_path) do |fp| fp.each do |line| key, value = line.chomp.split("\t") hash[key] = value end end 

应用https://stackoverflow.com/a/4120285/2097284的答案:

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

这扩展到

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

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