を依存し、私は通常、このような項目の配列(int型)の最大発生をカウント取得:ルビー:多くのハッシュの最大出現がその内容
specialties_with_frequency = specialties.inject(Hash.new(0)) { |h,v| h[v] += 1; h }
@reference.specialty_id = specialties.max_by { |v| specialties_with_frequency[v] }
今日、私はハッシュの最大発生をカウントする必要がありますコンテンツ。
品種は、これらのフィールドを含むデータベース・オブジェクトです: ID、grape_id、パーセント
私の重複オブジェクトは、複数の品種を持つことができます。例えば
@duplicates.each do |duplicate|
duplicate.varietals.each do |varietal|
end
end
、重複をbrowsings、私が持っています。この場合
duplicate 1: varietals => {grape_id => 1}, {grape_id => 2}
duplicate 2: varietals => {grape_id => 3}
duplicate 3: varietals => {grape_id => 1}, {grape_id => 2}
duplicate 4: varietals => {grape_id => 3}, {grape_id => 5}
を、受け入れたデータは次のようになります。
{grape_id => 1}, {grape_id => 2}
すべての重複を閲覧2件の発生があるため。
私はすべての出現でどのように同じ値を探索するのか分かりません。
おかげで、 アレクサンドル
を使用するか、配列の代わりにセットを使用します。常に同じ単一キーを含むハッシュの配列の代わりに値の配列を使用してください。 –
ラース、コードのおかげで。 hオブジェクトでmax_byを使用する必要はありませんか?結果はすでに最大から最小の出現順に並べられていますか? –
@ alex.bour:ハッシュは順序付けされていないので、前と同じように最大値を抽出する必要があります。 –