Dictionaries - Learn Python 3 - Snakify

Lesson 11
Dictionnaires


1. Dictionnaires

Les listes normales (tableaux) sont généralement un ensemble d'éléments numérotés. Par conséquent, si vous souhaitez faire référence à un élément de liste, vous devez spécifier son numéro. Le nombre d'éléments dans la liste identifie de manière unique l'élément lui-même. Mais les numéros d'identification ne sont pas toujours pratiques. Par exemple, les routes des trains en Russie utilisent des lettres et des chiffres comme code d'identification (numéro et un chiffre), un code alphabétique numérique identifie les vols, c'est-à-dire des informations sur les vols, les trains ou les avions. une chaîne de texte.

La structure de données, qui permet d'utiliser un type d'index arbitraire au lieu de numérique, est appelée dictionnaire ou tableau associatif . La structure de données correspondante en Python s'appelle dict .

Considérons un exemple simple. Obtenez le dictionnaire Capitals , où index est le nom du pays, et la valeur - le nom de la capitale de ce pays. Maintenant, pour une rangée avec le nom du pays, nous pouvons facilement identifier sa capitale.

# Créer des dictes vides
Capitals = dict()

# Remplissez-le avec quelques valeurs
Capitals['Russia'] = 'Moscow'
Capitals['Ukraine'] = 'Kiev'
Capitals['USA'] = 'Washington'

Countries = ['Russia', 'France', 'USA', 'Russia']

for country in Countries:
  # Pour chaque pays de la liste vérifier pour voir si elle est dans le dictionnaire Capitals
    if country in Capitals:
        print('The capital of ' + country + ' is ' + Capitals[country])
    else:
        print('The capital of ' + country + ' is unknown')

Ainsi, chaque élément du dictionnaire se compose de deux objets: clé et valeurs . Dans notre exemple, la clé est le nom du pays et la valeur est le nom de la capitale. La clé identifie l'élément du dictionnaire, la valeur est la donnée correspondant à la clé donnée. Les valeurs clés sont uniques, c'est-à-dire qu'il ne peut y avoir deux clés identiques dans le dictionnaire.

Nous sommes habitués aux dictionnaires qui nous entourent, les dictionnaires en papier habituels (définition, monolingue, bilingue). Pour définir un dictionnaire, la clé est le mot (le titre de l'article), et la valeur est l'article lui-même, et pour accéder à l'article, vous devez spécifier la clé de mot.

Un annuaire téléphonique est un autre exemple de structure de données de dictionnaire. Dans ce cas, la clé est le nom et la valeur est le numéro de téléphone. Pour le dictionnaire et le répertoire téléphonique, il est facile de trouver un élément du dictionnaire avec une clé donnée (par exemple, si les enregistrements sont stockés dans l'ordre alphabétique des clés, vous pouvez facilement trouver votre clé avec une recherche binaire) est inconnu, et nous ne connaissons que la valeur, la recherche de l'élément avec la valeur donnée peut nécessiter une vue cohérente de tous les éléments du dictionnaire.

Une caractéristique importante du tableau associatif est qu'il est dynamique, c'est-à-dire que vous pouvez ajouter de nouveaux éléments avec n'importe quelle clé et supprimer les éléments existants. La quantité de mémoire utilisée est proportionnelle à la taille du tableau associatif. L'accès aux éléments d'un tableau associatif est plus lent que pour les tableaux ordinaires, mais assez rapidement.

En Python, la clé peut être n'importe quel type de données immuable (non modifiable): entiers et nombres réels, chaînes, tuples. La clé dans le dictionnaire ne peut pas être un ensemble, mais peut être un élément de type frozenset : un type de données spécial analogique d'un set types qui ne peut pas être modifié après la création. La valeur de l'élément de dictionnaire peut être n'importe quel type de données, y compris modifiable.

Advertising by Google, may be based on your interests

2. Application de dictionnaires

Les dictionnaires sont utilisés dans les cas suivants:

  • compter le nombre de certains objets. Dans ce cas, vous devez créer un dictionnaire où les clés sont des objets et les valeurs sont des montants.
  • le stockage de toutes les données associées à l'objet. Les clés sont des objets, les valeurs sont des données associées. Par exemple, si vous voulez déterminer le numéro de séquence du mois par son nom, vous pouvez le faire en utilisant le dictionnaire Num['January'] = 1; Num['February'] = 2; ...
  • définir la correspondance entre les objets (par exemple, «le parent-descendant»). La clé est l'objet et la valeur est l'objet correspondant.
  • Si vous avez besoin d'un tableau simple, mais que la valeur maximale de l'index est très grande, bien que tous les index possibles ne soient pas utilisés (ce que l'on appelle "tableau sparse"), vous pouvez utiliser le tableau associatif pour économiser de la mémoire.

    Un dictionnaire vide peut être créé en utilisant la fonction dict() ou une paire d'accolades {} vide (c'est en fait la raison pour laquelle les accolades ne peuvent pas être utilisées pour créer un ensemble vide). Pour créer un dictionnaire avec un ensemble de valeurs initiales, vous pouvez utiliser les constructions suivantes:

    Capitals = {'Russia': 'Moscow', 'Ukraine': 'Kiev', 'USA': 'Washington'}
    Capitals = dict(RA = 'Moscow', Ukraine = 'Kiev', USA = 'Washington')
    Capitals = dict([("Russia", "Moscow"), ("Ukraine", "Kiev"), ("USA", "Washington")])
    Capitals = dict(zip(["Russia", "Ukraine", "USA"], ["Moscow", "Kiev", "Washington"]))
    print(Capitals)
    

    Les deux premières méthodes ne peuvent être utilisées que pour créer de petits dictionnaires en listant tous leurs éléments. De plus, dans la seconde méthode, les clés sont passées comme des paramètres nommés de dict , donc dans ce cas, les clés ne peuvent être que des chaînes, et seulement des identificateurs corrects. Dans les troisième et quatrième cas, vous pouvez créer de grands dictionnaires, si les arguments transférés sont une liste toute faite, qui peut être obtenue non seulement en listant tous les éléments, mais en construisant d'une autre manière pendant l'exécution du programme. Dans la troisième manière, la fonction dict doit recevoir une liste où chaque élément est un tuple de deux éléments: clé et valeur. La quatrième méthode utilise la fonction zip , qui doit recevoir deux listes de longueur égale: une liste de clés et une liste de valeurs.

    Advertising by Google, may be based on your interests
  • 3. Travailler avec des éléments du dictionnaire

    Opération de base: obtenir la valeur de l'élément par sa clé. Il est écrit exactement comme pour les listes: A[key] . S'il n'y a aucun élément avec la clé spécifiée dans le dictionnaire, il soulève l'exception KeyError .

    Une autre façon de définir la valeur basée sur une clé est une méthode get : A.get(key) . S'il n'y a aucun élément avec la clé get dans le dictionnaire, il retourne None . Dans la forme avec deux arguments, la A.get(key, val) renvoie val , si un élément avec la key n'est pas dans le dictionnaire.

    Pour vérifier si un élément appartient à un dictionnaire, les opérations in et not in sont utilisées, comme pour les ensembles.

    Pour ajouter un nouvel élément au dictionnaire, il suffit de lui attribuer une valeur: A[key] = value .

    Pour supprimer un élément du dictionnaire, vous pouvez utiliser del A[key] (l'opération déclenche une exception KeyError s'il n'y a pas de telle clé dans le dictionnaire.) Voici deux manières sûres de supprimer un élément du dictionnaire.

    A = {'ab' : 'ba', 'aa' : 'aa', 'bb' : 'bb', 'ba' : 'ab'}
    
    key = 'ac'
    if key in A:
        del A[key]
    
    try:
        del A[key]
    except KeyError:
    	print('There is no element with key "' + key + '" in dict')
    print(A)
    

    Dans le premier cas, on vérifie d'abord la présence d'un élément, puis on attrape et manipule l'exception.

    Une autre façon de supprimer un élément du dictionnaire est la méthode pop : A.pop(key) . Cette méthode renvoie la valeur de l'élément supprimé et si l'élément avec la clé donnée n'est pas dans le dictionnaire, une exception est déclenchée. Si la méthode pop reçoit un second paramètre, alors pour l'élément manquant, elle retournera la valeur de ce paramètre. Cela permet d'organiser en toute sécurité la suppression de l'élément du dictionnaire: A.pop(key, None) .

    Advertising by Google, may be based on your interests

    4. Dictionnaire d'itération

    Vous pouvez facilement parcourir les touches de tous les éléments du dictionnaire:

    A = dict(zip('abcdef', list(range(6))))
    for key in A:
        print(key, A[key])
    

    Les méthodes suivantes renvoient la représentation des éléments du dictionnaire. Les représentations sont similaires aux ensembles, mais elles changent si vous changez les valeurs des éléments. Les keys méthode renvoie une représentation des clés de tous les éléments, les values renvoie une représentation de toutes les valeurs et les items méthode renvoie une représentation de toutes les paires (tuples) de clés et de valeurs.

    Ainsi, pour un contrôle rapide si la valeur val est parmi toutes les valeurs du dictionnaire A vous devez utiliser la condition booléenne val in A.values() . Pour parcourir les clés et les variables, vous pouvez effectuer les opérations suivantes:

    A = dict(zip('abcdef', list(range(6))))
    for key, val in A.items():
        print(key, val)
    
    Advertising by Google, may be based on your interests