Maison >développement back-end >Tutoriel Python >Expliquer defaultdict en Python

Expliquer defaultdict en Python

Susan Sarandon
Susan Sarandonoriginal
2024-12-17 12:24:26690parcourir

Explaining defaultdict in Python

CAS D'UTILISATION

Le but de cette page ? est d'expliquer le concept et l'utilisation du defaultdict de Python à partir du module collections, en s'interrogeant spécifiquement sur le nom étrange. Il est inspiré de Advanced Python Mastery de David Baezley, voir ex_2_2 > Collections.

dict par défaut :

  • fournit une valeur par défaut pour les clés manquantes
  • évite KeyError en initialisant automatiquement les clés
  • est nommé pour son comportement par défaut d'initialisation des éléments
  • simplifie le code en évitant les vérifications et les insertions manuelles
  • seul un objet appelable (type ou fonction) est passé à initialiser
  • dans l'exemple donné, la liste est utilisée comme usine par défaut
  • ce qui signifie qu'il crée automatiquement une liste vide pour les clés manquantes
  • et facilite le regroupement efficace des données
  • peut également utiliser les fonctions lambda pour d'autres valeurs littérales par défaut
  • exemple : defaultdict(lambda : 0) renvoie 0 pour les clés manquantes

Exemple de code de maîtrise avancée de Python

portfolio
[{'name': 'AA', 'shares': 100, 'price': 32.2}, {'name': 'IBM', 'shares': 50, 'price': 91.1}, {'name': 'CAT', 'shares': 150, 'price': 83.44}, {'name': 'MSFT', 'shares': 200, 'price': 51.23}, {'name': 'GE', 'shares': 95, 'price': 40.37}, {'name': 'MSFT', 'shares': 50, 'price': 65.1}, {'name': 'IBM', 'shares': 100, 'price': 70.44}]
print("### DEFAULTDICT")
from collections import defaultdict

print("#### Group data, e.g. find all stocks with the same name")
byname = defaultdict(list)
for s in portfolio:
    byname[s["name"]].append(s)
byname

# defaultdict(<class 'list'>, {'AA': [{'name': 'AA', 'shares': 100, 'price': 32.2}], 'IBM': [{'name': 'IBM', 'shares': 50, 'price': 91.1}, {'name': 'IBM', 'shares': 100, 'price': 70.44}], 'CAT': [{'name': 'CAT', 'shares': 150, 'price': 83.44}], 'MSFT': [{'name': 'MSFT', 'shares': 200, 'price': 51.23}, {'name': 'MSFT', 'shares': 50, 'price': 65.1}], 'GE': [{'name': 'GE', 'shares': 95, 'price': 40.37}]})

print('#### Find all stocks with the name "IBM"')
byname["IBM"]
# >>> [{'name': 'IBM', 'shares': 50, 'price': 91.1}, {'name': 'IBM', 'shares': 100, 'price': 70.44}]

Exemple avec Lambda :

from collections import defaultdict

byname = defaultdict(lambda: 0)
print(byname["missing_key"])  # This will return 0

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn