====== 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])