如何将文件的元素放入哈希? -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+/
(以允许任何类型的空格)。