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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage