Erstellen hash aus array und Frequenz

Ich habe ein array [1,2,4,5,4,7] und ich will zu finden, die die Häufigkeit jeder Zahl und speichern in einem hash. Ich habe diesen code, aber es gibt NoMethodError: undefined method '+' for nil:NilClass

def score( array )
  hash = {}
  array.each{|key| hash[key] += 1}
end

Gewünschte Ausgabe

{1 => 1, 2 => 1, 4 => 2, 5 => 1, 7 => 1 }
  • Herr, einige empfehlen die Verwendung von Spritzen (auch reduziert), was in Ordnung ist, aber alles, was Sie tun müssen ist, ändern hash = {} zu hash = Hash.new(0). Das sagt Ruby, dass, wenn es trifft auf hash[key] in einem Kontext, wo es muss einen Wert haben (wie hash[key] += 1 oder v = hash[key]) und der hash nicht enthalten, die Taste key, es ist key=>0 zu den Hashwert vor der Einnahme von weiteren Maßnahmen (wie hash[key] += 1). Auf der anderen Seite if hash[key] == 7 bewerten zu if nil == 7 wenn key ist nicht in der hash -; key=>0 werden nicht Hinzugefügt, um den hash.
  • Schöne Lehre...!! Es mochte.. +1.
  • das problem ist möglicherweise das gleiche, aber nicht die Frage. Hier, Herr. möchte wissen, warum bekam er eine Fehlermeldung, die scheint mir Recht ligit.
  • fair genug, dann sagen wir es 🙂 stackoverflow.com/questions/9480852/array-to-hash-words-count
InformationsquelleAutor mr.musicman | 2013-11-13
Schreibe einen Kommentar