2016-04-20 17 views

Antwort

1

Normalerweise sollte die Ausnahme

TypeError: 'NoneType' has no attribute '__getitem__' 

sein, aber Sie können jedoch nicht ausgeführt werden diese:

scores.sort()[:20] 

, die einfach ist, weil list.sort() die Liste an Ort und Stelle verändert und alles nicht zurück (das Mittel es gibt implizit None zurück).

So können Sie entweder die scores.sort() in einer gesonderten Erklärung vor dem Schneidvorgang platzieren ...

scores.append((item, score)) 
scores.sort() 
output_file.write(scores[:20] + '\n') 

... oder Sie verwenden die integrierte Methode sorted(...), die nicht die ursprüngliche Liste nicht verändert, aber gibt eine sortierte Kopie zurück.

scores.append((item, score)) 
output_file.write(sorted(scores)[:20] + '\n') 

sollten Sie haben das erste Option, wenn Sie die sortiert Liste später wieder zugreifen möchten, aber Sie müssen wählte die zweite Option, wenn Sie die unsortiert Liste später wieder zugreifen möchten. Falls Sie die Liste nicht mehr benötigen, können Sie eine beliebige Option auswählen.

+0

danke Ihnen so sehr. Es funktionierte in beide Richtungen. – ssh26

+0

Anstatt "Danke" -Kommentare zu schreiben, akzeptieren Sie bitte diese Antwort, indem Sie auf den grauen Haken auf der linken Seite klicken, wenn es Ihnen geholfen hat. Lesen Sie auch die Seite [Tour] und lesen Sie die [Hilfe], um zu erfahren, wie diese Seite funktioniert. –

Verwandte Themen