Fehler: KeyError

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Krümelmonster
User
Beiträge: 2
Registriert: Donnerstag 9. Juli 2009, 21:45

Hallo,

ich habe aus einem Buch zu Empfehlungssystemen dieses Programm abgeschrieben, woraufhin ein Fehler aufgetaucht ist :oops: (KeyError: 'The Night Listener'), es muss an der Funktion topMatches liegen, den anderen Teil habe ich getestet.
Ich habe leider erst angefangen Python zu lernen und muss parallel das Thema durcharbeiten, deswegen wäre ich für Hilfe dankbar.

Code: Alles auswählen

critics={.....}
def sim_distance(prefs, person1, person2): #Funktion der das Dictionary mit den zwei Keys übergeben wird
	#Liste der gemeinsamen Elemente bestimmen
	si={}
	for item in prefs[person1]:
		if item in prefs[person2]: si[item]=1
			
	#Wenn keine gemeinsame Bewertung existiert, null zurückgeben
	if len(si)==0: return 0 
	#Quadrate aller Abstände addieren --> (Pythagoras)
	sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2)
					for item1 in prefs[person1] if item1 in prefs[person2]])#aber nur wenn beide das O. kennen

	return 1/(1+sqrt(sum_of_squares))		

def topMatches(prefs, person, n=5, similarity=sim_distance):
	scores=[(similarity(prefs,person,other),other)
				for other in prefs 
					if other <> person]
	
	#Sortieren der Liste
	scores.sort()
	scorse.reverse()
	return scores[0:n]
[/code]
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Vielleicht sagst du mal die Zeile, in der der Fehler auftritt.
Und dann gibts am besten auch den gesamten Code, aus diesem Schnippsel wird man eh nicht wirklich schlau! (am besten unter http://paste.pocoo.org/ , wenn er ziemlich groß ist)
Krümelmonster
User
Beiträge: 2
Registriert: Donnerstag 9. Juli 2009, 21:45

Hallo,

Tut mir Leid, es scheint jetzt plötzlich zu funktionieren. Vielleicht hätte ich einfach Python Shell neustarten sollen (?). Trotzdem wäre es toll, wenn mir jemand erklären könnte, was in der Zuweisung zu "scores" passiert.
Danke für deine Antwort, ice 2k3 (das war übrigens der gesamte Code, abgesehen vom Inhalt des Dictionarys)

Gruß
Krümelmonster
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Wieso fängst du nicht von vorne an? Da werden irgendwann die list comprehensions erklärt. Es bringt nichts, wenn du einfach irgendwas abschreibst...


Weitere Hilfen für Anfänger findes du auf: [wiki]Tutorial[/wiki]

btw. <> ist veraltet und fliegt in Python 3 raus.
Antworten