Chapter 3 Introduction à Python 3
3.1 Listes
3.1.1 Définition d’une liste
Une liste est une variable python définie à partir d’une séquence de valeurs (numériques et/ ou en caractères) indicées, spécifiées à l’intérieur de crochets et séparées par des virgules. Ce qui signifie qu’une liste est nécessairement un ensemble de valeurs (au moins une) même si on peut définir une liste vide.
Les propriétés des listes sont :
Elles sont de taille variable, donc on peut leur supprimer ou ajouter des valeurs
Elles sont modifiables, les valeurs peuvent être modifiées
Elles sont ordonnées, chaque valeur de la liste peut être identifiée à travers son indice c’est-à-dire sa position dans l’ordre des valeurs
Les types des valeurs contenues dans une liste sont totalement arbitraires : nombres, chaînes de caractères, des listes etc.
Elles peuvent être imbriquées, une liste peut en contenir une autre.
Pour créer une liste on utilise les crochets entre lesquels on met les valeurs souhaitées :
= [6, 23, 'LeBron']
my_list type(my_list)
## <class 'list'>
On peut aussi utiliser la fonction list()
= list("James")
my_other_list type(my_other_list)
## <class 'list'>
3.1.2 Accès aux éléments d’une liste
Pour accéder aux éléments d’une liste, on utilise du slicing. Le slicing consiste à extraire des éléments, une partie de la liste à travers leurs indices (positions dans la liste).
Il est importer de noter que sur python, la numérotation commence par indice 0.
3.1.2.1 Renvoyer l’indice d’un élément
Pour connaitre l’indice (la position) d’un élément, il suffit d’utiliser la fonction index()
.
Syntaxe : nom_de_ma_liste.index(valeur_element)
= ["Hey", 5, ["A", "B", 1, "2"], 6, "Hello"] # On définit d'abord notre liste
ma_liste print("ma_liste.index(6) renvoie l'index de l'élément 6 qui est : ", ma_liste.index(6))
## ma_liste.index(6) renvoie l'index de l'élément 6 qui est : 3
3.1.2.2 Indiçage d’une liste
Dans cette partie, on va voir comment en pratique on va utiliser les indices pour faire du slicing. On peut faire de l’indicage de plusieurs manières :
- Si on veut extraire un élément : nom_de_ma_liste[numero_element]
print("ma_liste[0] renvoie le premier élèment qui est : ", ma_liste[0])
## ma_liste[0] renvoie le premier élèment qui est : Hey
print("ma_liste[2] renvoie le 3e élèment qui est : ", ma_liste[2])
## ma_liste[2] renvoie le 3e élèment qui est : ['A', 'B', 1, '2']
On peut aussi compter à partir de la fin de la liste, en effet il se peut que la liste soit trop longue et que ce soit plus facile de se repérer en partant de la fin.
Cette fois ci c’est la même syntaxe sauf que (1) on ne compte plus à partir de 0 mais de 1 et (2) on met un signe négatif pour dire qu’on compte à partir de la droite.
print("ma_liste[-2] renvoie le 2e élèment à partir de la fin qui est : ", ma_liste[-2])
## ma_liste[-2] renvoie le 2e élèment à partir de la fin qui est : 6
- Si on veut extraire une partie de la liste : nom_de_ma_liste[debut : fin], en sachant que la borne supérieure est exclue (comme avec la fonction range() vue dans la chapitre 2)
print("ma_liste[0:2] renvoie une liste contenant les éléments d'indices 0 à 1 qui est : ", ma_liste[0:2])
## ma_liste[0:2] renvoie une liste contenant les éléments d'indices 0 à 1 qui est : ['Hey', 5]
print("ma_liste[:2] renvoie une liste contenant tous les éléments jusqu'à l'élément d'indice 1 qui est : ", ma_liste[:2])
## ma_liste[:2] renvoie une liste contenant tous les éléments jusqu'à l'élément d'indice 1 qui est : ['Hey', 5]
print("ma_liste[1:4] renvoie une liste contenant les éléments d'indice 1 à 3 qui est : ", ma_liste[1:4])
## ma_liste[1:4] renvoie une liste contenant les éléments d'indice 1 à 3 qui est : [5, ['A', 'B', 1, '2'], 6]
print("ma_liste[3:] renvoie une liste contenant les éléments d'indice 3 à la fin qui est : ", ma_liste[3:])
## ma_liste[3:] renvoie une liste contenant les éléments d'indice 3 à la fin qui est : [6, 'Hello']
print("ma_liste[-4:-2] renvoie une liste contenant le 4e et le 3e élements à partir de la fin : ", ma_liste[-4:-2])
## ma_liste[-4:-2] renvoie une liste contenant le 4e et le 3e élements à partir de la fin : [5, ['A', 'B', 1, '2']]
print("ma_liste[:] renvoie toute la liste : ", ma_liste[:])
## ma_liste[:] renvoie toute la liste : ['Hey', 5, ['A', 'B', 1, '2'], 6, 'Hello']
- Si on veut faire du slicing à plusieurs nouveaux, il s’agit d’accéder aux éléments d’une sous-liste contenue dans notre liste de base : nom_de_ma_liste[indice_sous_liste][indice_element_sous_liste]
print("ma_liste[2][1] renvoie le 2e élement de la sous_liste située à la 3e position qui est : ", ma_liste[2][1])
## ma_liste[2][1] renvoie le 2e élement de la sous_liste située à la 3e position qui est : B
3.1.2.3 Déterminer le nombre d’éléments d’une liste
La détermination du nombre d’éléments d’une liste se fait avec la fonction len()
.
Syntaxe : len(nom_de_ma_liste)
print(" len(ma_liste) renvoie le nombre d’éléments de la liste qui est : ", len(ma_liste))
## len(ma_liste) renvoie le nombre d’éléments de la liste qui est : 5
3.1.2.4 Tester l’existance d’un élement
Pour tester l’existence d’un élément dans une liste, on utilise le mot clé in
.
Syntaxe : element in nom_de_ma_liste. Si l’élément est dans la liste, ceci renvoie True et False sinon.
print(" 'Hello' in ma_liste : ", 'Hello' in ma_liste)
## 'Hello' in ma_liste : True
print(" 'C' in ma_liste[2] : ", 'C' in ma_liste[2])
## 'C' in ma_liste[2] : False
3.1.2.5 Compter le nombre d’occurences d’un élément
Une liste pouvant contenir plusieurs fois les mêmes éléments, on peut être amené à vouloir compter le nombre de fois que chaque élément est présent dans la liste. Ceci se fait en utilisant la fonction count()
.
Syntaxe : nom_de_ma_liste.count(element).
# Liste contenant l'ordre des buts lors de la remontada BAR-PSG de 2016
= ["Suarez", "Kurzawa CSC", "Messi", "Cavani", "Neymar", "Neymar", "Roberto"]
remontada print(" remontada.count('Messi') renvoie le nombre de buts de Messi : ",remontada.count('Messi'))
## remontada.count('Messi') renvoie le nombre de buts de Messi : 1
print(" remontada.count('Neymar') renvoie le nombre de buts de Neymar : ",remontada.count('Neymar'))
## remontada.count('Neymar') renvoie le nombre de buts de Neymar : 2
3.1.3 Modification d’une liste
3.1.3.1 Opérations élémentaires
On peut aussi démultiplier une liste, en la rendant n fois plus longue.
print("ma_liste*2 multiplie la taille liste par 2 : ", ma_liste*2)
## ma_liste*2 multiplie la taille liste par 2 : ['Hey', 5, ['A', 'B', 1, '2'], 6, 'Hello', 'Hey', 5, ['A', 'B', 1, '2'], 6, 'Hello']
On peut aussi sommer des listes en les fusionnant à travers une addition.
= [2, 3, 5, 7]
list_numerique
print("La fusion de list_numerique et de ma_liste est donnée par list_numerique + ma_liste : \n" , list_numerique + ma_liste)
## La fusion de list_numerique et de ma_liste est donnée par list_numerique + ma_liste :
## [2, 3, 5, 7, 'Hey', 5, ['A', 'B', 1, '2'], 6, 'Hello']
3.1.3.2 Ajouter de nouveaux éléments
On peut aussi ajouter des éléments à notre liste initiale avec la fonction append()
.
Syntaxe : nom_de_ma_liste.append(new_element).
11)
list_numerique.append(print("list_numerique.append(11) permet d'ajouter la valeur 9 à la liste, ce qui nous donne : \n" , list_numerique)
## list_numerique.append(11) permet d'ajouter la valeur 9 à la liste, ce qui nous donne :
## [2, 3, 5, 7, 11]
La fonction append()
permet d’ajouter un seul élément à la fois, pour en ajouter plusieurs d’un coup, on utilise extend()
Syntaxe : nom_de_ma_liste.extend([new_element_1, new_element_2 ,.., new_element_n]).
13, 17, 19]) list_numerique.extend([
3.1.3.3 Supprimer des éléments d’une liste
Pour supprimer des éléments d’une liste, on a 2 choix :
Quand on connait sa position, son index : on utilise la fonction
pop(index_element)
Quand on ne connait pas sa position : on utilise la fonction
remove
(element)`
print("La liste initiale est : ", list_numerique)
## La liste initiale est : [2, 3, 5, 7, 11, 13, 17, 19]
11) # supprime la valeur 11 de la liste
list_numerique.remove(print("la liste devient : ", list_numerique)
## la liste devient : [2, 3, 5, 7, 13, 17, 19]
-1) # supprime la dernière valeur qui est le 19 list_numerique.pop(
## 19
print("la liste devient : ", list_numerique)
## la liste devient : [2, 3, 5, 7, 13, 17]
3.1.3.4 Modifier ou remplacer les éléments d’une liste
La modification des éléments d’une liste se fait à travers une assignation en passant par leur index.
# On modifie cet élément en lui donnant la valeur -5
print("La liste initiale est : ", list_numerique)
## La liste initiale est : [2, 3, 5, 7, 13, 17]
2] = -5
list_numerique[print("la liste devient : ", list_numerique)
## la liste devient : [2, 3, -5, 7, 13, 17]
3.1.3.5 Trier une liste
Pour trier une liste, on utilise la fonction sort()
. Cette fonction ne marche que si la liste est constituée uniquement de valeurs numériques ou de valeurs constituées de chaînes de caractères.
Syntaxe : nom_de_ma_liste.sort().
= [ 12, 5, 4, 20, 3, 8, 9, 51]
x # tri croissant
x.sort() print("On fait un tri croissant : ", x)
## On fait un tri croissant : [3, 4, 5, 8, 9, 12, 20, 51]
=True) # tri décroissant
x.sort(reverseprint("On fait un tri décroissant : ", x)
## On fait un tri décroissant : [51, 20, 12, 9, 8, 5, 4, 3]
si le tri est effectué sur une liste contenant uniquement des chaînes de caractères, il est fait par ordre alphabétique.
= ["chat", "chien", "oiseau", "poisson", "souris",
y "hamster", "lézard", "serpent", "araignée"]
# tri croissant
y.sort() print("On fait un tri croissant : ", y)
## On fait un tri croissant : ['araignée', 'chat', 'chien', 'hamster', 'lézard', 'oiseau', 'poisson', 'serpent', 'souris']
=True) # tri décroissant
y.sort(reverseprint("On fait un tri décroissant : ", y)
## On fait un tri décroissant : ['souris', 'serpent', 'poisson', 'oiseau', 'lézard', 'hamster', 'chien', 'chat', 'araignée']
3.1.3.6 Copier une liste
Pour copier une liste, on a 2 manières : la copie superficielle ou la copie profonde.
- Copie superficielle : elle construit une nouvelle liste puis insère dans cette liste des références aux objets trouvés dans l’originale, si vous modifiez une liste l’autre liste sera modifiée aussi.
Syntaxe : nom_nouvelle_liste = nom_ancienne_liste.copy().
= [["chat", "chien", "oiseau"], "poisson", "souris",
y "hamster", "lézard", "serpent", "araignée"]
= y.copy()
z
print("Initialement")
## Initialement
print("y = ", y)
## y = [['chat', 'chien', 'oiseau'], 'poisson', 'souris', 'hamster', 'lézard', 'serpent', 'araignée']
print("z = ", z)
## z = [['chat', 'chien', 'oiseau'], 'poisson', 'souris', 'hamster', 'lézard', 'serpent', 'araignée']
0][0] = "Moustique" # On modifie un élement de la copie
z[print("Après modification")
## Après modification
print("y = ", y)
## y = [['Moustique', 'chien', 'oiseau'], 'poisson', 'souris', 'hamster', 'lézard', 'serpent', 'araignée']
print("z = ", z)
## z = [['Moustique', 'chien', 'oiseau'], 'poisson', 'souris', 'hamster', 'lézard', 'serpent', 'araignée']
On remarque que y et z sont tous les 2 modifiées alors qu’on agit que sur la copie qui est z. Ce ‘problème’ arrive lorsque l’on manipule des listes de liste. ELle n’est à utiliser que lorsque l’on a une liste simple (à une dimension).
- Copie profonde : Pour remédier à ce « problème », on utiliser la fonction deepcopy du module copy. La copie profonde construit une nouvelle liste puis insère dans la liste des copies des objets trouvés dans la liste originale.
= [["chat", "chien", "oiseau"], "poisson", "souris",
y "hamster", "lézard", "serpent", "araignée"]
import copy # on importe le module copy
= copy.deepcopy(y)
z
print("Initiallement")
## Initiallement
print("y = ", y)
## y = [['chat', 'chien', 'oiseau'], 'poisson', 'souris', 'hamster', 'lézard', 'serpent', 'araignée']
print("z = ", z)
## z = [['chat', 'chien', 'oiseau'], 'poisson', 'souris', 'hamster', 'lézard', 'serpent', 'araignée']
0][0] = "Moustique"
z[print("Après modification")
## Après modification
print("y = ", y)
## y = [['chat', 'chien', 'oiseau'], 'poisson', 'souris', 'hamster', 'lézard', 'serpent', 'araignée']
print("z = ", z)
## z = [['Moustique', 'chien', 'oiseau'], 'poisson', 'souris', 'hamster', 'lézard', 'serpent', 'araignée']
On voit que seul z est impacté et que y est resté intacte.
3.1.4 Autres fonctions appliquées aux listes
= [ 12, 5, 4, 20, 3, 8, 9, 51]
x print("La fonction max() affiche le maximum de la liste qui est : ", max(x))
## La fonction max() affiche le maximum de la liste qui est : 51
print("La fonction min() affiche le minimum de la liste qui est : ", min(x))
## La fonction min() affiche le minimum de la liste qui est : 3
print("La fonction sum() affiche la somme des éléments de la liste qui est : ", sum(x))
## La fonction sum() affiche la somme des éléments de la liste qui est : 112
print("La moyenne peut être obtenue par sum(x)/len(x) qui est :", sum(x)/len(x) )
## La moyenne peut être obtenue par sum(x)/len(x) qui est : 14.0
3.2 Tuples
3.2.1 Définition d’un tuple
A l’instar des objets listes, les objets tuples sont des séquences de valeurs (numériques et/ou en caractères) dont les éléments sont indiqués entre parenthèses (crochets pour les listes) et séparés par des virgules. A la différence des listes, les éléments d’un tuple sont indicés (accessibles par slicing) mais pas modifiables. Toutefois, il est possible d’extraire les éléments pour en créer d’autres objets.
Propriétés des tuples :
Les tuples sont des listes inaltérables : il est impossible de changer un tuple une fois qu’il a été créé: il est impossible d’ajouter/retirer des éléments
Les tuples sont ordonnés
Les tuples sont plus rapides que les listes
On peut créer un tuple en mettant les valeurs entre parenthèses ou sans
= ("Kobe Bryant", "Lakers", 24)
my_tuple type(my_tuple)
## <class 'tuple'>
= "Kobe Bryant", "Lakers", 24
my_second_tuple print(my_second_tuple)
## ('Kobe Bryant', 'Lakers', 24)
On peut aussi utiliser la fonction tuple()
= tuple(range(1, 10, 2))
my_third_tuple print(my_third_tuple)
## (1, 3, 5, 7, 9)
3.2.2 Renvoyer l’indice d’un élément
Comme pour les listes, on détermine l’indice d’un tuple avec la fonction index
= (10, "chat", True, 3.14)
mon_tuple print("mon_tuple.index(10) renvoie l'index de la valeur 10 qui est :", mon_tuple.index(10))
## mon_tuple.index(10) renvoie l'index de la valeur 10 qui est : 0
3.2.3 Indiçage d’un tuple
Le slicing d’un tuple aussi est fait de la même manière que pour celui d’une liste.
print("Valeur du tuple", mon_tuple)
## Valeur du tuple (10, 'chat', True, 3.14)
print("mon_tuple[2 :] renvoie tous éléments à partir de l’élément d’indice 2 qui donne : ", mon_tuple[2 :])
## mon_tuple[2 :] renvoie tous éléments à partir de l’élément d’indice 2 qui donne : (True, 3.14)
print("mon_tuple[-2] renvoie l'avant dernier élément du tuple qui donne : ", mon_tuple[ -2])
## mon_tuple[-2] renvoie l'avant dernier élément du tuple qui donne : True
3.3 Dictionnaires
3.3.1 Définition d’un dictionnaire
Un dictionnaire est une structure de données qui permet de stocker des paires clé-valeur, où chaque clé est associée à une valeur correspondante. On peut penser à un dictionnaire comme à un vrai dictionnaire dans lequel chaque mot est associé à une définition.
Les propriétés d’un dictionnaire sont :
Les dictionnaires ne sont pas ordonnés et les clés doivent être uniques et immuables, c’est-à-dire qu’on ne peut pas les modifier, tandis que les valeurs peuvent être n’importe quel objet Python
On accède aux éléments d’un dictionnaire par leur clé et non pas parleur position
Les dictionnaires ne supportent pas les opérations que l’on a vu précédemment sur les séquences.
On peut supprimer et modifier des paires clé-valeur dans un dictionnaire Python à tout moment
Pour créer un dictionnaire on utilise les accolades entre lesquelles on met les paires clé-valeur souhaitées :
= {
cedeao_dict "Bénin": ["Béninois", "+229", "Porto-Novo", 12123200, "Patrice Talon"],
"Burkina Faso": ["Burkinabè", "+226", "Ouagadougou", 20903278, "Roch Marc Christian Kaboré"],
"Côte d'Ivoire": ["Ivoirien", "+225", "Yamoussoukro", 26896308, "Alassane Ouattara"],
"Gambie": ["Gambien", "+220", "Banjul", 2347706, "Adama Barrow"],
"Ghana": ["Ghanéen", "+233", "Accra", 31382960, "Nana Akufo-Addo"],
"Guinée": ["Guinéen", "+224", "Conakry", 13132792, "Alpha Condé"],
"Guinée-Bissau": ["Bissau-Guinéen", "+245", "Bissau", 1920922, "Umaro Sissoco Embaló"],
"Liberia": ["Libérien", "+231", "Monrovia", 5057677, "George Weah"],
"Mali": ["Malien", "+223", "Bamako", 20250833, "Assimi Goïta"],
"Niger": ["Nigérien", "+227", "Niamey", 26089574, "Mohamed Bazoum"],
"Nigeria": ["Nigérian", "+234", "Abuja", 211401000, "Muhammadu Buhari"],
"Sénégal": ["Sénégalais", "+221", "Dakar", 16743927, "Macky Sall"],
"Sierra Leone": ["Sierra-léonais", "+232", "Freetown", 7976985, "Julius Maada Bio"],
"Togo": ["Togolais", "+228", "Lomé", 8278724, "Faure Gnassingbé"]
}
Dans ce dictionnaire, la clé correspond au nom du pays, et la valeur est une liste qui contient des informations (gentilé, indicateur téléphonique, capitale, population, Président) sur le pays.
Pour trouver toutes les clés ou valeurs d’un dictionnaire, on applique les fonctions nom_de_mon_dict.keys() et nom_de_mon_dict.values()
cedeao_dict.keys()
## dict_keys(['Bénin', 'Burkina Faso', "Côte d'Ivoire", 'Gambie', 'Ghana', 'Guinée', 'Guinée-Bissau', 'Liberia', 'Mali', 'Niger', 'Nigeria', 'Sénégal', 'Sierra Leone', 'Togo'])
cedeao_dict.values()
## dict_values([['Béninois', '+229', 'Porto-Novo', 12123200, 'Patrice Talon'], ['Burkinabè', '+226', 'Ouagadougou', 20903278, 'Roch Marc Christian Kaboré'], ['Ivoirien', '+225', 'Yamoussoukro', 26896308, 'Alassane Ouattara'], ['Gambien', '+220', 'Banjul', 2347706, 'Adama Barrow'], ['Ghanéen', '+233', 'Accra', 31382960, 'Nana Akufo-Addo'], ['Guinéen', '+224', 'Conakry', 13132792, 'Alpha Condé'], ['Bissau-Guinéen', '+245', 'Bissau', 1920922, 'Umaro Sissoco Embaló'], ['Libérien', '+231', 'Monrovia', 5057677, 'George Weah'], ['Malien', '+223', 'Bamako', 20250833, 'Assimi Goïta'], ['Nigérien', '+227', 'Niamey', 26089574, 'Mohamed Bazoum'], ['Nigérian', '+234', 'Abuja', 211401000, 'Muhammadu Buhari'], ['Sénégalais', '+221', 'Dakar', 16743927, 'Macky Sall'], ['Sierra-léonais', '+232', 'Freetown', 7976985, 'Julius Maada Bio'], ['Togolais', '+228', 'Lomé', 8278724, 'Faure Gnassingbé']])
3.3.2 Accès aux éléments d’un dictionnaire
3.3.2.1 Récupérer les clés ou valeurs d’un dictionnaire
Comme précisé plus tôt, l’accès aux valeurs d’un dictionnaire se faire à travers la clé, qu’elle est justement unique.
Syntaxe : nom_de_mon_dict[clé]
On va accéder aux valeurs du Sénégal
"Sénégal"] cedeao_dict[
## ['Sénégalais', '+221', 'Dakar', 16743927, 'Macky Sall']
On peut aussi aller plus loin et accéder par exemple à la population de la Côte d’Ivoire
= cedeao_dict["Côte d'Ivoire"] # On accède d'abord à toutes les valeurs
elements_civ print(f"""Les informations sur la CIV sont {elements_civ}""")
## Les informations sur la CIV sont ['Ivoirien', '+225', 'Yamoussoukro', 26896308, 'Alassane Ouattara']
= elements_civ[-2] # puis on va chercher la population qui est
population_civ # à la 2e position de la liste à partir de la droite
print(f"""La population de la CIV est de {population_civ} millions d'habitants.""")
## La population de la CIV est de 26896308 millions d'habitants.
3.3.3 Modification de dictionnaire
3.3.3.1 Ajout de clé-valeur à un dictionnaire
Pour ajouter une paire clé-valeur, on utilise la syntaxe suivante: nom_de_mon_dict[“nouvelle_clé”] = nouvelle_valeur
"mozambique"] = ["Mozambicain", "+258", "Maputo", 31255435, "Filipe Nyusi"]
cedeao_dict[print(cedeao_dict)
## {'Bénin': ['Béninois', '+229', 'Porto-Novo', 12123200, 'Patrice Talon'], 'Burkina Faso': ['Burkinabè', '+226', 'Ouagadougou', 20903278, 'Roch Marc Christian Kaboré'], "Côte d'Ivoire": ['Ivoirien', '+225', 'Yamoussoukro', 26896308, 'Alassane Ouattara'], 'Gambie': ['Gambien', '+220', 'Banjul', 2347706, 'Adama Barrow'], 'Ghana': ['Ghanéen', '+233', 'Accra', 31382960, 'Nana Akufo-Addo'], 'Guinée': ['Guinéen', '+224', 'Conakry', 13132792, 'Alpha Condé'], 'Guinée-Bissau': ['Bissau-Guinéen', '+245', 'Bissau', 1920922, 'Umaro Sissoco Embaló'], 'Liberia': ['Libérien', '+231', 'Monrovia', 5057677, 'George Weah'], 'Mali': ['Malien', '+223', 'Bamako', 20250833, 'Assimi Goïta'], 'Niger': ['Nigérien', '+227', 'Niamey', 26089574, 'Mohamed Bazoum'], 'Nigeria': ['Nigérian', '+234', 'Abuja', 211401000, 'Muhammadu Buhari'], 'Sénégal': ['Sénégalais', '+221', 'Dakar', 16743927, 'Macky Sall'], 'Sierra Leone': ['Sierra-léonais', '+232', 'Freetown', 7976985, 'Julius Maada Bio'], 'Togo': ['Togolais', '+228', 'Lomé', 8278724, 'Faure Gnassingbé'], 'mozambique': ['Mozambicain', '+258', 'Maputo', 31255435, 'Filipe Nyusi']}
On peut aussi modifier une valeur d’un dictionnaire
"mozambique"][0] = "Mozambicaine" # On va mettre le gentillé au féminin
cedeao_dict[print(cedeao_dict["mozambique"])
## ['Mozambicaine', '+258', 'Maputo', 31255435, 'Filipe Nyusi']
3.3.3.2 Suppression de clé-valeur d’un dictionnaire
Pour supprimer un élément, on utilise la syntaxe suivante: del nom_de_mon_dict[“clé”]
Cette méthode supprime la clé et la valeur qui lui est associée.
del cedeao_dict["mozambique"]
print(cedeao_dict)
## {'Bénin': ['Béninois', '+229', 'Porto-Novo', 12123200, 'Patrice Talon'], 'Burkina Faso': ['Burkinabè', '+226', 'Ouagadougou', 20903278, 'Roch Marc Christian Kaboré'], "Côte d'Ivoire": ['Ivoirien', '+225', 'Yamoussoukro', 26896308, 'Alassane Ouattara'], 'Gambie': ['Gambien', '+220', 'Banjul', 2347706, 'Adama Barrow'], 'Ghana': ['Ghanéen', '+233', 'Accra', 31382960, 'Nana Akufo-Addo'], 'Guinée': ['Guinéen', '+224', 'Conakry', 13132792, 'Alpha Condé'], 'Guinée-Bissau': ['Bissau-Guinéen', '+245', 'Bissau', 1920922, 'Umaro Sissoco Embaló'], 'Liberia': ['Libérien', '+231', 'Monrovia', 5057677, 'George Weah'], 'Mali': ['Malien', '+223', 'Bamako', 20250833, 'Assimi Goïta'], 'Niger': ['Nigérien', '+227', 'Niamey', 26089574, 'Mohamed Bazoum'], 'Nigeria': ['Nigérian', '+234', 'Abuja', 211401000, 'Muhammadu Buhari'], 'Sénégal': ['Sénégalais', '+221', 'Dakar', 16743927, 'Macky Sall'], 'Sierra Leone': ['Sierra-léonais', '+232', 'Freetown', 7976985, 'Julius Maada Bio'], 'Togo': ['Togolais', '+228', 'Lomé', 8278724, 'Faure Gnassingbé']}
On peut aussi supprimer juste un élément de la valeur de cette clé.
del cedeao_dict["Sénégal"][-1] # On supprime le Président du Sénégal
print(cedeao_dict["Sénégal"])
## ['Sénégalais', '+221', 'Dakar', 16743927]
3.3.3.3 Fusionner des dictionnaires
On peut fusionner dictionnaires et en faire un seul avec la fonction update().
Syntaxe : dictionnaire1.update(dictionnaire2)
= {"fruit": "apple", "animal": "dog", "color": "blue"}
dict1 = {"sport": "football", "vehicle": "car", "color": "red"}
dict2
dict1.update(dict2)
print(dict1)
## {'fruit': 'apple', 'animal': 'dog', 'color': 'red', 'sport': 'football', 'vehicle': 'car'}
3.4 Sets
3.4.1 Définition d’un set
Un set contient une collection non-ordonnée d’éléments uniques (pas de doublons) et inaltérables (pas de listes en élément par exemple, mais on peut mettre des tuples). Cela signifie qu’un set ne peut pas contenir plusieurs éléments identiques et l’ordre dans lequel les éléments sont stockés n’a pas d’importance.
La structure de set est une implémentation en Python des ensembles en mathématiques.
On peut créer un tuple en mettant les valeurs entre parenthèses ou sans
= set("Kobe Bryant")
my_set print(my_set)
## {'B', ' ', 'y', 'b', 'e', 'o', 'a', 'r', 'n', 't', 'K'}
On peut aussi avec une chaîne de caractères contenant des doublons
= set("Ouagadougou")
my_other_set print(my_other_set)
## {'g', 'O', 'o', 'a', 'u', 'd'}
On voit que le set contient uniquement des éléments non ordonnées et uniques.
3.4.2 Accès aux éléments d’un set
Un set étant non ordonné, il est impossible de sélectionner des éléments d’un set par slicing.
### Modification d’un set
#### Ajout d’un élément
L’ajout d’un élément au set se fait par la fonction add()
.
Syntaxe : nom_de_mon_set.add(new_element)
= set([1, 3, 5, 7, 9]) # on crée le set à partir d'une liste
set_nombres_premiers 11) # On ajoute le nombre 11 au set
set_nombres_premiers.add(print(set_nombres_premiers)
## {1, 3, 5, 7, 9, 11}
On va essayer d’ajouter un nombre qui existe déjà
1) # On ajoute le nombre 1 au set
set_nombres_premiers.add(print(set_nombres_premiers)
## {1, 3, 5, 7, 9, 11}
On voit qu’il ne se passe rien, ce qui est totalement normal car le set ne doit pas contenir de doublons.