Hola Nicolás:
En situaciones como esta te conviene realizar pruebas más pequeñas y acotadas sobre el Playground para poder ir acostumbrándote al manejo de las colecciones de Pharo y poder encontrar la solución antes de aplicarlo directamente al TP.
Para realizar lo que proponés debés simplemente verificar que exista la clave en tu diccionario y acceder siempre a la colección correspondiente a esa clave, tal cual como hacías con los diccionarios en Python.
En Pharo los diccionarios entienden un mensaje que se llama at:ifAbsentPut:
que recibe dos parámetros. El primero es la clave que va a buscar y, en caso de encontrarla devuelve el valor asociado a esa clave e ignora lo que se haya pasado
por segundo parámetro. En caso de que la clave no exista, la crea y pone al objeto pasado por segundo parámetro como su valor asociado.
Te dejo el siguiente código a modo de ejemplo:
| unDiccionario coleccion |
Transcript clear.
unDiccionario := Dictionary new.
" Agrego una nueva asociación clave-valor sabiendo que la clave 'Juan' no existe "
unDiccionario at: 'Juan' put: (OrderedCollection new).
" Obtengo el la colección asociada a la clave 'Juan' sabiendo que ya existe "
coleccion := unDiccionario at: 'Juan'.
coleccion add: 3.
" Busco el valor de la clave 'Maria' y si no existe le pongo una OrderedColecction "
coleccion := unDiccionario at: 'Maria' ifAbsentPut: (OrderedCollection new).
coleccion add: '4'.
coleccion := unDiccionario at: 'Juan'.
coleccion add: 5.
coleccion := unDiccionario at: 'Maria'.
coleccion add: 6.
unDiccionario associationsDo: [ :asociacion |
Transcript show: (asociacion key); show: ' -> '.
(asociacion value) do: [ :elemento | Transcript show: elemento; show: ' ' ].
Transcript cr.
]
Te recomiendo copiar este código en el Playground, ejecutarlo y verificar qué obtenés impreso en el Transcript para entender qué sucede.
Por otro lado, aprovecho para mencionar que, si bien para el alcance del TP0 está bien utilizar un diccionario para eso y que hayas hecho que toda la lógica esté en la clase PelisRankings, para el TP1 esto se considerará como un error muy grave y significará la desaprobación automática del TP, dado que viola los conceptos de encapsulamiento y delegación que se vieron esta semana en clase (ilustrados por el ejemplo de la Máquina expendedora de bebidas). Para el TP0 no te preocupes porque el objetivo era simplementa familiarizarte con el entorno y la sintaxis de Pharo y amigarse con el libro Pharo By Example, pero después de lo visto en esta semana ya debería hacerte un poco de ruido que quieras meterle toda la responsabilidad a una sola clase.
Saludos,
Tomás