Rewriting meine Partituren Textdatei, um sicherzustellen, dass es nur die letzten 4 Partituren (Python) hat
Zuvor hatte ich mithilfe von SO-Benutzern herausgefunden, wie maximal 4 Schlüssel in einem Python-Dokument mit der Eigenschaft maxlength im Wörterbuch gespeichert werden können.
Now, ich möchte noch weiter gehen. Unten ist eine Textdatei mit allenkürzlic Scores meiner Teilnehmer - Dave, Jack und Adam.
Jack:10
Dave:20
Adam:30
Jack:40
Adam:50
Dave:60
Jack:70
Dave:80
Jack:90
Jack:100
Dave:110
Dave:120
Adam:130
Adam:140
Adam:150
Nun, hier ist mein Code, mit dem ich die letzten 4 Scores in Python sehen kann:
import collections
from collections import defaultdict
scores_guessed = collections.defaultdict(lambda: collections.deque(maxlen=4))
with open('Guess Scores.txt') as f:
for line in f:
name,val = line.split(":")
scores_guessed[name].appendleft(int(val))
for k in sorted(scores_guessed):
print("\n"+k," ".join(map(str,scores_guessed[k])))
writer = open('Guess Scores.txt', 'wb')
for key, value in scores_guessed.items():
writer.writerow([key,':',value])
Es wird natürlich das folgende Ergebnis für das Wörterbuch ausgegeben:
Adam 150 140 130 50
Dave 120 110 80 60
Jack 100 90 70 40
Jedoc, Ich möchte, dass die Datei mir die letzten vier Ergebnisse in alphabetischer Reihenfolge vorliest:
Adam:150
Adam:140
Adam:130
Adam:50
Dave:120
Dave:110
Dave:80
Dave:60
Jack:100
Jack:90
Jack:70
Jack:40
Ich dachte, dass dieser Codeblock funktionieren würde:
for key, value in scores_guessed.items():
writer.writerow([key,':',value])
Yet dies gibt mir das Ergebnis zurück:
AttributeError: '_io.BufferedWriter' object has no attribute 'writerow'
Zum Beispiel, wenn Adam eine Punktzahl von 200 hat, möchte ich, dass score_guessed wie folgt umgeschrieben wird:
Adam:200
Adam:150
Adam:140
Adam:130
Was läuft falsch?
AKTUALISIERE - Als Antwort auf die erste Antwort unten habe ich den letzten Codeblock folgendermaßen bearbeitet:
for key, value in scores_guessed.items():
writer.write("{}:{}\n".format(key,value))
Noch gibt es mir diese Meldung: writer.write ("{}: {} \ n" .format (Schlüssel, Wert)) TypeError: 'str' unterstützt die Buffer-Schnittstelle nicht
Was ist los