Python >> Tutoriel Python >  >> Python

5 façons de créer un dictionnaire en Python

Vous voulez améliorer votre jeu Python ? Apprenez à créer des dictionnaires en Python à partir de nombreuses sources différentes, y compris la lecture de fichiers JSON et la combinaison de deux dictionnaires.

Donc, vous avez déjà compris comment utiliser les dictionnaires en Python. Vous savez tout sur la façon dont les dictionnaires sont des structures de données mutables contenant des paires clé-valeur . Vous comprenez que vous devez fournir une clé au dictionnaire pour récupérer une valeur . Mais vous n'avez peut-être pas réalisé que les dictionnaires en Python sont de toutes formes et tailles et de toutes sortes de sources.

Pensez simplement au nombre d'objets réels pouvant être modélisés à l'aide de paires clé-valeur :les étudiants et leurs notes, les gens et leurs professions, les produits et leurs prix, pour n'en nommer que quelques-uns. Les dictionnaires sont au cœur du traitement des données en Python, et vous les rencontrez lors du chargement de données à partir de fichiers ou de la récupération de données sur le Web.

Étant donné que les dictionnaires Python sont si omniprésents, il n'est pas surprenant que vous puissiez les créer à partir de nombreuses sources différentes. Dans cet article, nous explorons 5 façons de créer des dictionnaires en Python . Commençons !

1. Dictionnaire Python à partir du littéral du dictionnaire {}

Sans surprise, c'est la méthode la plus courante pour créer des dictionnaires en Python. Tout ce que vous avez à faire est de déclarer vos paires clé-valeur directement dans le code et n'oubliez pas d'utiliser le bon format :

  • Utilisez { pour ouvrir le dictionnaire.
  • Utilisez : pour définir des paires clé-valeur.
  • Utilisez , pour séparer les paires clé-valeur les unes des autres.
  • Utilisez } pour fermer le dictionnaire.

Simple mais efficace! Voici un exemple basique de ce à quoi cela ressemble :

grades = {'John': 7.5, 'Mary': 8.9, 'James': 9.0}

Les dictionnaires ignorent les espaces et les sauts de ligne à l'intérieur. Nous pouvons en profiter et écrire une seule paire clé-valeur par ligne. Cela améliore la lisibilité, en particulier lorsque nos dictionnaires deviennent un peu trop volumineux pour tenir confortablement sur une seule ligne :

grades = {
    'John': 7.5,
    'Mary': 8.9,
    'James': 9.0,
    # add more lines here …
}

2. Dictionnaire Python du constructeur dict()

Les dictionnaires peuvent également être construits à partir du Python dict() constructeur. dict() est une fonction intégrée à Python, elle est donc toujours disponible sans avoir besoin d'importer quoi que ce soit.

Vous pouvez utiliser le Python dict() constructeur de deux manières. La première consiste à fournir les paires clé-valeur via des arguments de mots-clés :

prices = dict(apple=2.5, orange=3.0, peach=4.4)
print(prices)

# output: {'apple': 2.5, 'orange': 3.0, 'peach': 4.4}

Il est juste de dire que la première méthode est plus facile à lire et à comprendre en un coup d'œil. Cependant, les arguments de mots clés sont toujours interprétés comme des chaînes, et l'utilisation d'arguments de mots clés peut ne pas être une option si vous avez besoin d'un dictionnaire dans lequel les clés ne sont pas des chaînes. Jetez un oeil à cet exemple pour voir ce que je veux dire :

# this works
values = [(1, 'one'), (2, 'two')]
prices = dict(values)

# SyntaxError - a number is not a valid keyword argument!
prices = dict(1='one', 2='two')

Au fait, si vous avez besoin d'un rappel, consultez cet excellent article sur les tuples et autres séquences en Python.

3. Dictionnaire Python à partir d'un fichier JSON

JSON signifie JavaScript Object Notation, et c'est un format de fichier extrêmement courant pour stocker et transmettre des données sur le Web. Voici un exemple de fichier JSON, appelé person.json :

{
    "name": "Mark",
    "age": 32,
    "likes_dancing": true
}

Remarquez quelque chose? Ouais! Les fichiers JSON sont à peu près identiques aux dictionnaires en Python. Il n'est donc pas surprenant que vous puissiez charger très facilement des données JSON dans Python. Nous devons simplement :

  • Importer le json module (ne vous souciez pas d'installer quoi que ce soit; ce module fait partie de l'installation de base de Python).
  • Ouvrez le person.json fichier (regardez ce cours si vous ne savez pas ce que signifie "ouvrir un fichier" en Python).
  • Passez le descripteur de fichier ouvert au json.load() fonction.

Nous suivons ces étapes dans le code ci-dessous :

import json

with open('person.json', 'r') as json_file:
    person = json.load(json_file)
print(person)

# output: {'name': 'Mark', 'age': 32, 'likes_dancing': True}

Notez que vous pouvez également faire l'inverse et écrire un Python dict() dans un fichier JSON. Ce processus est appelé sérialisation . Consultez cet article pour plus d'informations sur la sérialisation.

4. Dictionnaire Python à partir de deux dictionnaires utilisant l'opérateur d'union de dictionnaire

Si vous utilisez Python version 3.9 ou ultérieure, il existe encore un autre moyen de créer un dictionnaire en Python :l'opérateur d'union de dictionnaire (| ), introduit dans Python 3.9. Il fusionne les paires clé-valeur de deux ou plusieurs dictionnaires en un seul. En ce sens, il est similaire à l'opérateur d'union d'ensemble (lisez cet article si vous ne savez pas ce que sont les opérateurs d'ensemble).

Voici un exemple de l'opérateur d'union de dictionnaire en action :

jobs_1 = {
	'John': 'Engineer',
	'James': 'Physician',
}

jobs_2 = {
	'Jack': 'Journalist',
	'Jill': 'Lawyer',
}

jobs = jobs_1 | jobs_2
print(jobs)

# output: {'John': 'Engineer', 'James': 'Physician', 'Jack': 'Journalist', 'Jill': 'Lawyer'}

Il est important de noter que, s'il y a des clés en double dans les dictionnaires source, le dictionnaire résultant obtient la valeur du dictionnaire source le plus à droite . C'est une conséquence du fait que Python n'autorise pas les clés en double dans un dictionnaire. Jetez un œil à ce qui se passe ici :

d1 = {
	'A': 1,
	'B': 2,
}

d2 = {
	'B': 100,
	'C': 3,
}

result = d1 | d2
print(result)

# output: {'A': 1, 'B': 100, 'C': 3}

Comme vous pouvez le voir, B apparaît dans les deux d1 et d2 . La valeur dans le result le dictionnaire vient de d2 , le dictionnaire source le plus à droite dans l'expression d1 | d2 . La paire clé-valeur 'B': 2 à partir de d1 est perdu. Gardez cela à l'esprit lorsque vous utilisez l'opérateur d'union de dictionnaire !

5. Dictionnaire Python à partir d'une compréhension Dict

Avez-vous déjà entendu parler des compréhensions de listes ? Une fois que vous les maîtrisez, elles constituent un excellent moyen de créer de nouvelles listes à partir de listes déjà existantes, soit en filtrant les éléments, soit en les modifiant.

Mais qu'est-ce que cela a à voir avec la construction de dictionnaires en Python ? Eh bien, une syntaxe similaire est utilisée pour construire des dictionnaires, dans ce que nous appelons une dict comprehension . Dans l'exemple ci-dessous, nous prenons une liste de chaînes et construisons un dictionnaire à partir de celles-ci. Chaque clé est la chaîne elle-même et la valeur correspondante est sa longueur. Jetez un œil :

animals = ['cat', 'lion', 'monkey']
animal_dict = {animal: len(animal) for animal in animals}
print(animal_dict)

# output: {'cat': 3, 'lion': 4, 'monkey': 6}

Regarde comment ça marche? Pour chaque animal dans la liste animals , nous construisons une paire clé-valeur du animal lui-même et sa longueur (len(animal) ).

Voici un exemple plus complexe. Nous utilisons une compréhension dict pour filtrer les valeurs d'un dictionnaire préexistant . Voyez si vous pouvez comprendre ce que fait le code ci-dessous :

ages = {
    'Bill': 23,
    'Steve': 34,
    'Maria': 21,
}
filtered_ages = {name: age for name, age in ages.items() if age < 30}
print(filtered_ages)

# output: {'Bill': 23, 'Maria': 21}

Voyez-vous ce qui se passe? Nous utilisons ages.items() pour obtenir chaque paire clé-valeur du dictionnaire d'origine et construire filtered_ages basé sur cela. Mais nous ajoutons le if age < 30 peu à la fin. Ainsi, lors de sa construction, filtered_ages ignore les paires clé-valeur dont l'âge est égal ou supérieur à 30 ans. En d'autres termes, nous filtrons le dictionnaire d'origine , en sélectionnant uniquement les paires clé-valeur dont la valeur est inférieure à 30. C'est quelque chose de puissant !

Créez des dictionnaires en Python !

Dans cet article, nous avons discuté de 5 façons de créer des dictionnaires en Python. Nous sommes partis des bases du littéral du dictionnaire {} et le Python dict() constructeur, à des exemples plus complexes de fichiers JSON, d'opérateurs d'union de dictionnaire et de compréhensions dict.

J'espère que vous avez appris quelque chose de nouveau. Si vous en voulez plus, assurez-vous d'aller sur LearnPython.com pour tout ce qui concerne Python !