====== Listes et Dictionnaires ====== ===== Listes ===== ==== Opérations sur les listes ==== Créer une liste vide : liste = [] Ajouter des éléments à la liste : liste.append(23) Nombre d'éléments dans la liste : len(liste) Trouver l'index d'un élément (Exception si n'existe pas) : liste.index(23) Enlever un élément selon sa valeur (Exception si n'existe pas, et si plusieurs seul le premier est enlevé): liste.remove(23) Enlever un élément selon son index : del liste[2] Enlever plusieurs éléments selon une plage d'index : liste = [10, 15, 16, 18, 22, 24, 31] del liste[2:5] # résultat : [10, 15, 24, 31] ==== Tri d'une liste ==== liste.sort() Trier une liste d'objets selon une propriété : class Article: def __init__(self, ref, denom): self.ref = ref self.denom = denom liste = [] liste.append(Article(1023, 'disque dur')) liste.append(Article(1018, 'processeur')) liste.append(Article(1045, 'carte mere')) liste.append(Article(1039, 'lecteur cd')) # Trier selon la propriété ref liste.sort(lambda x, y: x.ref - y.ref) Trier une liste de dictionnaires : liste = [ { "ref": 1023, "denom": "disque dur" }, { "ref": 1018, "denom": "processeur" }, { "ref": 1045, "denom": "carte mere" }, { "ref": 1039, "denom": "lecteur cd" }, ] # Trier selon la propriété denom liste_denom = sorted(liste, key = lambda x: x['url']) Pour trier sur d'autres types de propriétés ou sur une combinaison de propriétés, remplacer la fonction lambda par l'appel à une autre fonction, prenant deux objets en paramètre, et renvoyant ^ -1 | si ''x < y'' | ^ 0 | si ''x = y'' | ^ 1 | si ''x > y'' | ==== Conversion en chaîne ==== Avec la méthode **join()** d'une chaîne : a = ['un', 'deux', 'trois'] b = ",".join(a) # Résultat : # 'un, deux, trois' Si la liste contient des nombres : a = [1, 2, 3] b = ", ".join([str(x) for x in a]) # Résultat : # '1, 2, 3' ==== Parcourir une liste ==== Parcours simple : numbers = ['one', 'two', 'three'] for num in numbers: print(num) # one # two # three Parcours avec énumération : numbers = ['one', 'two', 'three'] for i, num in enumerate(numbers): print(i, num) # 0 one # 1 two # 2 three ===== Dictionnaires ===== dico = {} dico['nom'] = 'Dupont' dico['prenom'] = 'Albert' print dico # => {'nom': 'Dupont', 'prenom': 'Albert'} print dico['prenom'] # => 'Marc' ages = {'marc': 33, 'david': 26, 'nathalie':30} print ages['marc'] # => 33 print ages['nathalie'] # => 30 Supprimer un élément d'un dictionnaire : del ages['david'] print ages # => {'nathalie': 30, 'marc': 33} Liste des clés et des valeurs du dictionnaire : print dico.keys() # => ['nom', 'prenom'] print dico.values() # => ['Dupont', 'Albert'] Tester si certaines clés existent dans le dictionnaire : if 'adresse' in dico: # => faux pass if 'prenom' in dico: # => vrai pass Lire une valeur du dictionnaire, ou une valeur par défaut si la clé n'existe pas : dico = { 'marque': 'Toyota', 'annee': 2015) a = dico.get('marque', 'Inconnue') # => 'Toyota' b = dico.get('couleur', 'Rouge') # => 'Rouge' Parcourir toutes les valeurs d'un dictionnaire : codesDechets = { 201: u"Manque de mousse", 202: u"Début/Fin de bobine", 203: u"Manque de joint", 204: u"Débordement mousse", 205: u"Griffes" } for code in codesDechets: print(code, codesDechets[code])