Reescribiendo mi archivo de texto de puntajes para asegurarme de que solo tenga los últimos 4 puntajes (python)


Anteriormente, con la ayuda de los usuarios de SO, había podido encontrar cómo almacenar un máximo de 4 claves dentro de un documento de Python con la propiedad maxlength dentro del diccionario.

Ahora quiero ir más allá. A continuación se muestra un archivo de texto con todos losreciente decenas de mis participantes: Dave, Jack y 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

Ahora, aquí está mi código que me permite ver los últimos 4 puntajes en Python:

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])

Claramente, imprimirá el siguiente resultado para el diccionario:

Adam 150 140 130 50

Dave 120 110 80 60

Jack 100 90 70 40

sin embargo, Quiero que el archivo me lea los últimos cuatro resultados en orden alfabético:

Adam:150
Adam:140
Adam:130
Adam:50
Dave:120
Dave:110
Dave:80
Dave:60
Jack:100
Jack:90
Jack:70
Jack:40

Pensé que este bloque de código funcionaría:

for key, value in scores_guessed.items():
   writer.writerow([key,':',value])

Sin embargo, esto me devuelve el resultado:

AttributeError: '_io.BufferedWriter' object has no attribute 'writerow'

Por ejemplo, si Adam obtuvo un puntaje de 200, quiero que el score_guessed sea reescrito como:

Adam:200
Adam:150
Adam:140
Adam:130

¿Qué va mal?

ACTUALIZAR - En respuesta a la primera respuesta a continuación, he editado el último bloque de código para esto:

for key, value in scores_guessed.items():
    writer.write("{}:{}\n".format(key,value))

Sin embargo, me da este mensaje: writer.write ("{}: {} \ n" .format (clave, valor)) TypeError: 'str' no es compatible con la interfaz del búfer

¿Qué está pasando?

Respuestas a la pregunta(1)

Su respuesta a la pregunta