压倒一切<=&燃气轮机;还有equ?在Ruby中使用不同的设置

压倒一切<=&燃气轮机;还有equ?在Ruby中使用不同的设置,ruby,Ruby,摘要:我试图找出一种好方法来存储、排序和平均相关数据,这些数据是我从文件中读取后分组到对象中的。我有两个相关的问题: 1) 覆盖以不同的顺序对对象进行排序,同时覆盖eq?以表示它们相等,这是一种可接受的做法吗 2) 是否有方法使用has\u key?检查哈希,其中has\u key?读取多个参数以执行和检查哈希 详细信息: 我正在从一个文本文件中读取大量数据,我想对它进行排序,排除最高值和最低值,然后计算平均值。为了使这个问题更具体,我的输入集由以下字符串组成: field1 field2 fi

摘要:我试图找出一种好方法来存储、排序和平均相关数据,这些数据是我从文件中读取后分组到对象中的。我有两个相关的问题:

1) 覆盖
以不同的顺序对对象进行排序,同时覆盖
eq?
以表示它们相等,这是一种可接受的做法吗

2) 是否有方法使用
has\u key?
检查哈希,其中
has\u key?
读取多个参数以执行和检查哈希

详细信息

我正在从一个文本文件中读取大量数据,我想对它进行排序,排除最高值和最低值,然后计算平均值。为了使这个问题更具体,我的输入集由以下字符串组成:

field1 field2 field3 value1 value2

(请注意,它更复杂,但我已经在进行解析以提取这些值)

最初,我创建了一个类,如:

class data
  def initialize
    @field1
    @field2
    @field3
    @value1
    @value2
  end
end
我还重新定义了比较运算符
,以便它首先在
field1
上排序,然后在
field2
上排序,最后在
field3
上排序。这使我能够打印出所有按我想要的顺序排序的数据

但是现在我想做的是,当所有字段都相同时,将不同的值平均起来。我还希望能够排序的条目,并删除最高和最低的值之前做平均。也就是说,我希望能够对
field1
field2
field3
相同的条目进行分组。然后按
value1
对分组的条目进行排序,删除最高和最低的条目,然后将剩余的结果一起平均

我的一个想法是扩展类定义,以包括存储
value1
value2
的数组。然后,我将在哈希表中插入对象,并在哈希存在的情况下向对象添加新值。但我不确定如何或是否可以使用多个字符串来检查散列是否有特定的键

我假设我可以重写
散列
eq?
运算符,以便
字段1
字段2
字段3
具有相同值的对象将散列到相同的位置。我不确定的一点是,说对象与
eq?
相等,但用
按不同的顺序排序是否是个好主意

或者也许在Ruby中有一种更简单的方法来解决我正在研究的问题,而我所想到的解决方案比它需要的更复杂

#define: Hash#has_keys?
class Hash
    def has_keys? *args
        args.all?{|k| self.keys.include? k } unless self.keys.empty?
        # returns true if hash has all keys
        # returns false otherwise
        # returns nil if the hash is empty?
    end
end

其余的不太确定。

我还没有读完整的问题,但看起来你想创建一个比较器。你有没有检查过Ruby?你有没有考虑过把你的数据扔进数据库,让它来完成繁重的工作?即使是SQLite也会把这些东西吃掉。我已经用过类似的混合物了。我需要弄清楚的是它是如何与散列相互作用的?或者也许这并不重要,这是我想知道的一部分。@muistooshort我做这件事是为了处理几千个日志文件中的几百万行文本数据。所以有足够的数据值得编写一个脚本来解析,但不足以证明使用数据库是合理的,至少我不这么认为。