在ruby中删除重复数据

在ruby中删除重复数据,ruby,Ruby,我想删除基于所有三个字段(即基于事件名称、日期和时间)的代码中的重复项,如果所有三个字段都匹配两个事件,则应删除其中一个字段,仅显示唯一的事件。我编写的代码仅适用于一个字段,即基于事件名称删除其条目。如何匹配所有三个字段。我在用&但没用 include Enumerable list = [ { :eventname => "music show", :date => "1st august", :time => "9 pm" },

我想删除基于所有三个字段(即基于事件名称、日期和时间)的代码中的重复项,如果所有三个字段都匹配两个事件,则应删除其中一个字段,仅显示唯一的事件。我编写的代码仅适用于一个字段,即基于事件名称删除其条目。如何匹配所有三个字段。我在用&但没用

include Enumerable

list = [
  {
     :eventname => "music show",
     :date => "1st august",
     :time => "9 pm"
  },
  {
      :eventname => "dance show",
      :date => "11st august",
      :time => "9 pm"
  },
  {
      :eventname => "music show",
      :date => "1st august",
      :time => "9 pm"
  },
  {
       :eventname => "music show",
       :date => "15st august",
       :time => "9 pm"
  },
  {
      :eventname => "magic show",
      :date => "12st august",
      :time => "9 pm"
  },
  {
      :eventname => "rock show",
      :date => "1st august",
      :time => "9 pm"
  }
]

b=list.group_by{|r| r[:eventname]}.map do |k, v|
    v.inject({}) { |r, h| r.merge(h){ |key, o, n| o || n } }
end

使用
数组的
uniq
方法:

list.uniq

使用
数组的
uniq
方法:

list.uniq