1
最大数值我有一个看起来像这样的数据文件:建立哈希散列值来确定红宝石
FBpp0070000 acyr193594273 acyr 866
FBpp0070000 acyr193577824 acyr 536
FBpp0070000 acyr193693009 acyr 445
FBpp0070000 bomb193605819 bomb 503
FBpp0070000 bomb193676398 bomb 101
FBpp0070001 acyr193618043 acyr 316
FBpp0070001 acyr193617997 acyr 313
FBpp0070001 bomb193638865 bomb 482
FBpp0070001 locu193695159 locu 220
FBpp0070001 locu193638863 locu 220
数据文件是〜45000线长。
我的目标是有这样的:
FBpp0070000 acyr193594273 acyr 866
FBpp0070000 bomb193605819 bomb 503
FBpp0070001 acyr193618043 acyr 316
FBpp0070001 bomb193638865 bomb 482
FBpp0070001 locu193695159 locu 220
也就是说,仅保留在第4列得分最高的线路,每个不同的值在第3列,在第1列的每个值。
此外,我看到的问题是1)多重,在第1列和第2列中重复的“键”)等于第4列中的“分数”我只想保留一个重复“分数”的实例。
我在过去在perl中构建了一个可以处理多个重复键的散列。
这是我到目前为止的红宝石。
hash = Hash.new{|h,k| h[k]=Hash.new(&h.default_proc) }
title = ''
File.open('test1.txt', 'r').each do |line|
line.chomp!
query, hit, taxa, score = line.split(/\s/)
hash[query][hit][taxa] = score
# end
#p "#{query}: #{taxa}: #{score}"
end
p hash
所以,我希望有人可以帮助我判断1)如果我是,事实上,正确的要对此,和2)如果是这样,如何提取我所需要的线。
谢谢。
DJ2,非常感谢您的帮助!我会弄清楚如何在明天排序。对此,我真的非常感激。 – user511038 2010-11-17 22:10:22