Problème avec utilisation dictionnaire
Bonjour,
J'ai un souci avec l'utilisation du dictionnaire. Les valeurs que je stocke dans le dictionnaire s'écrasent à chaque itération. Le but est de stocker l'identifiant du film comme clé dans le dictionnaire et la valeur comme étant la note accordée au film par l'utilisateur.
Voici la classe:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class User:
# -------------------------------------------------------------------------
user_id: int
note_film: Dict[int,float]
# -------------------------------------------------------------------------
def __init__(self, user_id: int, note_film: Dict[int, float]):
self.user_id = user_id
self.note_film = note_film
# -------------------------------------------------------------------------
def imprimer_users(self):
print(self.user_id)
print(self.note_film) |
Le code permettant d'afficher :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #####Ouverture du fichier#####
f = open ('ratings_5users.csv')
fichier_ratings = csv.reader(f)
#####Création de différentes variables#####
#Liste qui contiendra l'ensemble des utilisateurs provenant du fichier ratings.csv
tous_les_users = []
user_id = int
movie_id = int
note = float
#Permet de savoir à quel utilisateur nous sommes dans le fichier
indice = 1
#Dictionnaire qui contiendra l'ensemble des ids des films et des notes attribuées à ces films par un utilisateur
ratings: Dict[int,float]
ratings ={}
#####Lecture des éléments####
for ligne in fichier_ratings:
user_id = ligne[0] #Récupère les ids users
movie_id = ligne[1] #Récupère les ids des films
note = ligne[2] # Récupère la note attribué par cet utilisateur à ce film
#On regarde la note suivante du même utilisateur que précédemment
if int(user_id) == indice:
ratings[int(movie_id)] = float(note)
#On passe à l'utilisateur suivant dans le fichier
else:
#Encoder les infos relatives à l'utilisateur précédent dont la liste de notes est terminée
#On retire 1 au user_id lors de la création de l'utilisateur car on vient de passer à l'utilisateur suivant
user = User(int(user_id)-1,ratings)
#On ajoute cet utilisateur à la liste de tous les utilisateurs
tous_les_users.append(user)
#On efface ce qui est contenu dans le dictionnaire afin de le remplir par les notes de l'utilisateur suivant
ratings.clear()
#On passe à l'utilisateur suivant
indice=indice+1
#On commence un nouveau dictionnaire avec les notes vu qu'on est passé à l'utilisateur suivant
ratings[int(movie_id)] = float(note)
#On enregistre le dernier utilisateur
user = User(int(user_id),ratings)
tous_les_users.append(user)
#####Imprimer les informations concernant les utilisateurs#####
for a in tous_les_users:
a.imprimer_users() |
Ce qui est affiché:
1
{3: 4.0, 39: 4.0, 104: 4.0, 141: 4.0, 150: 4.0, 231: 3.5, 277: 4.5, 344: 3.5, 356: 4.0, 364: 4.0, 367: 4.0, 377: 4.0, 440: 4.0, 500: 4.5, 586: 4.0, 588: 3.5, 595: 4.0, 597: 5.0, 788: 3.5, 858: 2.5, 903: 3.5, 919: 4.0, 1022: 4.0, 1035: 5.0, 1193: 3.0, 1221: 2.5, 1247: 4.0, 1307: 4.0, 1380: 5.0, 1393: 3.5, 1485: 4.5, 1544: 3.5, 1682: 4.0, 1721: 4.0, 1777: 4.0, 1784: 4.5, 1923: 4.5, 1961: 4.0, 1968: 4.0, 1997: 3.5, 2023: 1.5, 2081: 5.0, 2273: 4.0, 2294: 4.0, 2355: 3.5, 2424: 4.0, 2502: 3.5, 2683: 4.0, 2694: 4.5, 2706: 4.0, 2762: 3.5, 2770: 3.5, 2918: 3.5, 2997: 3.5, 3114: 3.5, 3176: 3.5, 3408: 4.0, 3753: 3.5, 3897: 4.5, 3948: 3.5, 4014: 4.0, 4018: 4.0, 4022: 3.5, 4025: 4.5, 4306: 3.5, 4308: 3.5, 4447: 4.5, 4718: 3.5, 4963: 3.0, 4995: 4.5, 5266: 3.5, 5299: 4.5, 5349: 4.5, 5464: 4.0, 5669: 3.5, 5679: 4.5, 5816: 3.0, 5995: 4.0, 6218: 3.5, 6373: 4.0, 6377: 4.0, 6502: 4.0, 6711: 2.5, 6942: 4.0, 8376: 4.0, 8464: 4.0, 8622: 3.5, 8636: 4.5, 8644: 4.0, 30707: 4.5, 30749: 4.5, 30793: 3.5, 33166: 5.0, 33679: 4.0, 34162: 4.5, 35836: 4.0, 40819: 4.5, 41566: 4.0, 41569: 4.0, 48385: 4.5}
2
{3: 4.0, 39: 4.0, 104: 4.0, 141: 4.0, 150: 4.0, 231: 3.5, 277: 4.5, 344: 3.5, 356: 4.0, 364: 4.0, 367: 4.0, 377: 4.0, 440: 4.0, 500: 4.5, 586: 4.0, 588: 3.5, 595: 4.0, 597: 5.0, 788: 3.5, 858: 2.5, 903: 3.5, 919: 4.0, 1022: 4.0, 1035: 5.0, 1193: 3.0, 1221: 2.5, 1247: 4.0, 1307: 4.0, 1380: 5.0, 1393: 3.5, 1485: 4.5, 1544: 3.5, 1682: 4.0, 1721: 4.0, 1777: 4.0, 1784: 4.5, 1923: 4.5, 1961: 4.0, 1968: 4.0, 1997: 3.5, 2023: 1.5, 2081: 5.0, 2273: 4.0, 2294: 4.0, 2355: 3.5, 2424: 4.0, 2502: 3.5, 2683: 4.0, 2694: 4.5, 2706: 4.0, 2762: 3.5, 2770: 3.5, 2918: 3.5, 2997: 3.5, 3114: 3.5, 3176: 3.5, 3408: 4.0, 3753: 3.5, 3897: 4.5, 3948: 3.5, 4014: 4.0, 4018: 4.0, 4022: 3.5, 4025: 4.5, 4306: 3.5, 4308: 3.5, 4447: 4.5, 4718: 3.5, 4963: 3.0, 4995: 4.5, 5266: 3.5, 5299: 4.5, 5349: 4.5, 5464: 4.0, 5669: 3.5, 5679: 4.5, 5816: 3.0, 5995: 4.0, 6218: 3.5, 6373: 4.0, 6377: 4.0, 6502: 4.0, 6711: 2.5, 6942: 4.0, 8376: 4.0, 8464: 4.0, 8622: 3.5, 8636: 4.5, 8644: 4.0, 30707: 4.5, 30749: 4.5, 30793: 3.5, 33166: 5.0, 33679: 4.0, 34162: 4.5, 35836: 4.0, 40819: 4.5, 41566: 4.0, 41569: 4.0, 48385: 4.5}
3
{3: 4.0, 39: 4.0, 104: 4.0, 141: 4.0, 150: 4.0, 231: 3.5, 277: 4.5, 344: 3.5, 356: 4.0, 364: 4.0, 367: 4.0, 377: 4.0, 440: 4.0, 500: 4.5, 586: 4.0, 588: 3.5, 595: 4.0, 597: 5.0, 788: 3.5, 858: 2.5, 903: 3.5, 919: 4.0, 1022: 4.0, 1035: 5.0, 1193: 3.0, 1221: 2.5, 1247: 4.0, 1307: 4.0, 1380: 5.0, 1393: 3.5, 1485: 4.5, 1544: 3.5, 1682: 4.0, 1721: 4.0, 1777: 4.0, 1784: 4.5, 1923: 4.5, 1961: 4.0, 1968: 4.0, 1997: 3.5, 2023: 1.5, 2081: 5.0, 2273: 4.0, 2294: 4.0, 2355: 3.5, 2424: 4.0, 2502: 3.5, 2683: 4.0, 2694: 4.5, 2706: 4.0, 2762: 3.5, 2770: 3.5, 2918: 3.5, 2997: 3.5, 3114: 3.5, 3176: 3.5, 3408: 4.0, 3753: 3.5, 3897: 4.5, 3948: 3.5, 4014: 4.0, 4018: 4.0, 4022: 3.5, 4025: 4.5, 4306: 3.5, 4308: 3.5, 4447: 4.5, 4718: 3.5, 4963: 3.0, 4995: 4.5, 5266: 3.5, 5299: 4.5, 5349: 4.5, 5464: 4.0, 5669: 3.5, 5679: 4.5, 5816: 3.0, 5995: 4.0, 6218: 3.5, 6373: 4.0, 6377: 4.0, 6502: 4.0, 6711: 2.5, 6942: 4.0, 8376: 4.0, 8464: 4.0, 8622: 3.5, 8636: 4.5, 8644: 4.0, 30707: 4.5, 30749: 4.5, 30793: 3.5, 33166: 5.0, 33679: 4.0, 34162: 4.5, 35836: 4.0, 40819: 4.5, 41566: 4.0, 41569: 4.0, 48385: 4.5}
4
{3: 4.0, 39: 4.0, 104: 4.0, 141: 4.0, 150: 4.0, 231: 3.5, 277: 4.5, 344: 3.5, 356: 4.0, 364: 4.0, 367: 4.0, 377: 4.0, 440: 4.0, 500: 4.5, 586: 4.0, 588: 3.5, 595: 4.0, 597: 5.0, 788: 3.5, 858: 2.5, 903: 3.5, 919: 4.0, 1022: 4.0, 1035: 5.0, 1193: 3.0, 1221: 2.5, 1247: 4.0, 1307: 4.0, 1380: 5.0, 1393: 3.5, 1485: 4.5, 1544: 3.5, 1682: 4.0, 1721: 4.0, 1777: 4.0, 1784: 4.5, 1923: 4.5, 1961: 4.0, 1968: 4.0, 1997: 3.5, 2023: 1.5, 2081: 5.0, 2273: 4.0, 2294: 4.0, 2355: 3.5, 2424: 4.0, 2502: 3.5, 2683: 4.0, 2694: 4.5, 2706: 4.0, 2762: 3.5, 2770: 3.5, 2918: 3.5, 2997: 3.5, 3114: 3.5, 3176: 3.5, 3408: 4.0, 3753: 3.5, 3897: 4.5, 3948: 3.5, 4014: 4.0, 4018: 4.0, 4022: 3.5, 4025: 4.5, 4306: 3.5, 4308: 3.5, 4447: 4.5, 4718: 3.5, 4963: 3.0, 4995: 4.5, 5266: 3.5, 5299: 4.5, 5349: 4.5, 5464: 4.0, 5669: 3.5, 5679: 4.5, 5816: 3.0, 5995: 4.0, 6218: 3.5, 6373: 4.0, 6377: 4.0, 6502: 4.0, 6711: 2.5, 6942: 4.0, 8376: 4.0, 8464: 4.0, 8622: 3.5, 8636: 4.5, 8644: 4.0, 30707: 4.5, 30749: 4.5, 30793: 3.5, 33166: 5.0, 33679: 4.0, 34162: 4.5, 35836: 4.0, 40819: 4.5, 41566: 4.0, 41569: 4.0, 48385: 4.5}
5
{3: 4.0, 39: 4.0, 104: 4.0, 141: 4.0, 150: 4.0, 231: 3.5, 277: 4.5, 344: 3.5, 356: 4.0, 364: 4.0, 367: 4.0, 377: 4.0, 440: 4.0, 500: 4.5, 586: 4.0, 588: 3.5, 595: 4.0, 597: 5.0, 788: 3.5, 858: 2.5, 903: 3.5, 919: 4.0, 1022: 4.0, 1035: 5.0, 1193: 3.0, 1221: 2.5, 1247: 4.0, 1307: 4.0, 1380: 5.0, 1393: 3.5, 1485: 4.5, 1544: 3.5, 1682: 4.0, 1721: 4.0, 1777: 4.0, 1784: 4.5, 1923: 4.5, 1961: 4.0, 1968: 4.0, 1997: 3.5, 2023: 1.5, 2081: 5.0, 2273: 4.0, 2294: 4.0, 2355: 3.5, 2424: 4.0, 2502: 3.5, 2683: 4.0, 2694: 4.5, 2706: 4.0, 2762: 3.5, 2770: 3.5, 2918: 3.5, 2997: 3.5, 3114: 3.5, 3176: 3.5, 3408: 4.0, 3753: 3.5, 3897: 4.5, 3948: 3.5, 4014: 4.0, 4018: 4.0, 4022: 3.5, 4025: 4.5, 4306: 3.5, 4308: 3.5, 4447: 4.5, 4718: 3.5, 4963: 3.0, 4995: 4.5, 5266: 3.5, 5299: 4.5, 5349: 4.5, 5464: 4.0, 5669: 3.5, 5679: 4.5, 5816: 3.0, 5995: 4.0, 6218: 3.5, 6373: 4.0, 6377: 4.0, 6502: 4.0, 6711: 2.5, 6942: 4.0, 8376: 4.0, 8464: 4.0, 8622: 3.5, 8636: 4.5, 8644: 4.0, 30707: 4.5, 30749: 4.5, 30793: 3.5, 33166: 5.0, 33679: 4.0, 34162: 4.5, 35836: 4.0, 40819: 4.5, 41566: 4.0, 41569: 4.0, 48385: 4.5}
Alors que chacun devrait avoir des notes différentes pour chaque film et que les utilisateurs n'ont pas vu les mêmes films.