TP - Structures Imbriquées (Spotify)

Dictionnaires et Tables

🦊

🎧 TP : Structures Imbriquées (Spotify)

🎯 Objectif

Comprendre comment naviguer dans des données complexes : une liste de dictionnaires, où chaque dictionnaire contient lui-même des listes.

C'est exactement comme cela que Spotify ou Netflix stockent vos données !


1. Analyse de la Structure

Voici notre base de données musicale spotify_db. C'est une liste qui contient 3 dictionnaires (les artistes).

spotify_db = [
    {
        "nom": "Orelsan",
        "genre": "Rap",
        "albums": ["Civilisation", "La fête est finie"],
        "top_titres": [
            {"titre": "Basique", "ecoutes": 15000000},
            {"titre": "La Terre est ronde", "ecoutes": 12000000}
        ]
    },
    {
        "nom": "Angèle",
        "genre": "Pop",
        "albums": ["Brol", "Nonante-Cinq"],
        "top_titres": [
            {"titre": "Bruxelles je t'aime", "ecoutes": 18000000},
            {"titre": "Balance ton quoi", "ecoutes": 20000000}
        ]
    },
    {
        "nom": "The Weeknd",
        "genre": "RnB",
        "albums": ["After Hours", "Starboy"],
        "top_titres": [
            {"titre": "Blinding Lights", "ecoutes": 90000000},
            {"titre": "Save Your Tears", "ecoutes": 85000000}
        ]
    }
]

🧠 Comment lire ça ?

Imaginez que vous êtes un GPS. Pour trouver une info, vous devez suivre le chemin étape par étape.

  • spotify_db est une Liste [...]. Donc on utilise un indice [0], [1], etc.
  • spotify_db[0] est un Dictionnaire {...} (C'est Orelsan). Donc on utilise une clé ["nom"], ["albums"].
  • spotify_db[0]["albums"] est une Liste [...]. Donc on utilise un indice.

Schéma Visuel :

spotify_db (Liste)
   │
   ├── [0] (Dictionnaire : Orelsan)
   │    ├── "nom": "Orelsan"
   │    ├── "albums" (Liste) ───► [0]: "Civilisation"
   │    │                         [1]: "La fête est finie"
   │
   ├── [1] (Dictionnaire : Angèle)
   │    ├── "nom": "Angèle"
   │    ...

Exemple : Je veux le premier album d'Angèle.

  1. Angèle est le 2ème élément de la liste principale -> spotify_db[1]
  2. Je veux ses albums -> spotify_db[1]["albums"] (C'est une liste : ["Brol", "Nonante-Cinq"])
  3. Je veux le premier -> spotify_db[1]["albums"][0]
  4. Résultat : "Brol"

2. Exercices d'Échauffement (Lecture)

1. Lecture simple
2. Parcours simple

Sans utiliser de boucle, écrire les instructions pour afficher :

  1. Le genre musical de The Weeknd.
  2. Le deuxième album d'Orelsan ("La fête est finie").
  3. Le nombre d'écoutes de "Balance ton quoi" (Angèle).

Astuce : Procéder étape par étape. Trouver d'abord l'artiste, puis la clé, puis l'indice...


3. Exercices Avancés (Listes dans Dictionnaires)

Ici, on va devoir entrer dans les sous-listes. C'est souvent là que ça bloque ! Rappelez-vous : Si c'est une liste, il faut (souvent) une boucle pour la parcourir.

3. Lister les albums
4. Le plus écouté
5. Ajouter un album

L'objectif est d'afficher tous les albums présents dans la base de données, peu importe l'artiste.

  1. Parcourir chaque artiste.
  2. Pour chaque artiste, parcourir sa liste d'albums.
  3. Afficher le nom de l'album.

4. Défis Experts (Calculs & Filtrage)

Maintenant, on mélange tout : conditions if, boucles for et accès aux dictionnaires !

6. Filtrage par genre
7. Total des écoutes
8. Qui a fait cet album ?
9. Ajouter un titre (Dur !)

Afficher le nom de tous les artistes dont le genre est "Pop".

  1. Parcourir la liste des artistes.
  2. Si le genre de l'artiste est égal à "Pop"...
  3. ... Afficher son nom.

5. Défis Ultimes (Data Analyst) 👩‍💻

Ici, on ne rigole plus. On va faire de la vraie analyse de données comme un Data Scientist chez Spotify.

10. Moyenne d'écoutes
11. Générer une Playlist
12. L'Artiste N°1
13. Nettoyage (Suppression)

Calculer la moyenne des écoutes par chanson pour Angèle.

  1. Cibler Angèle.
  2. Calculer la somme totale de ses écoutes (comme à l'exercice 7).
  3. Compter combien elle a de titres dans top_titres (avec len()).
  4. Diviser la somme par le nombre de titres.