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:
Le code permettant d'afficher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Ce qui est affiché:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()
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.
Partager