Le livre de recettes Python (structures de données et algorithmes) combine plusieurs mappages en un seul mappage

不言
Libérer: 2018-04-19 13:45:38
original
1513 Les gens l'ont consulté

Cet article présente principalement la méthode de fusion de plusieurs mappages en un seul mappage dans le livre de recettes Python (structure des données et algorithme). Il analyse les compétences de mise en œuvre liées aux opérations de fusion de mappages de dictionnaires Python sous forme d'exemples. à cela

L'exemple de cet article décrit la méthode Python permettant de fusionner plusieurs mappages en un seul mappage. Partagez-le avec tout le monde pour votre référence, comme suit :

Question : Fusionnez logiquement plusieurs dictionnaires ou mappages en une seule structure de mappage pour effectuer certaines opérations, par exemple rechercher une valeur ou vérifier si une clé existe

Solution : Utilisez la classe collections dans le module ChainMap

ChainMap pour accepter plusieurs mappages puis les faire apparaître logiquement comme une structure de cartographie unique. Ces mappages ne sont pas littéralement fusionnés. Au lieu de cela, ChainMap maintient simplement une liste enregistrant les relations de mappage sous-jacentes, puis redéfinit les opérations courantes du dictionnaire pour analyser cette liste.

# example.py
#
# Example of combining dicts into a chainmap
a = {'x': 1, 'z': 3 }
b = {'y': 2, 'z': 4 }
# (a) Simple example of combining
from collections import ChainMap
c = ChainMap(a,b) #如果有重复的键,那么会采用第一个映射中所对应的值。
print(c['x'])   # Outputs 1 (from a)
print(c['y'])   # Outputs 2 (from b)
print(c['z'])   # Outputs 3 (from a)
# Output some common values
print('len(c):', len(c))
print('c.keys():', list(c.keys()))
print('c.values():', list(c.values()))
# Modify some values
c['z'] = 10
c['w'] = 40
print("a:", a)
del c['x']
print("a:", a)
# Example of stacking mappings (like scopes)
values = ChainMap()
values['x'] = 1
# Add a new mapping
values = values.new_child()
values['x'] = 2
# Add a new mapping
values = values.new_child()
values['x'] = 3
print(values)
print(values['x'])
# Discard last mapping
values = values.parents
print(values)
print(values['x'])
# Discard last mapping
values = values.parents
print(values)
print(values['x'])
Copier après la connexion

>>> ================================ RESTART ================================
>>>
1
2
3
len(c): 3
c.keys(): ['y', 'x', 'z']
c.values(): [2, 1, 3]
a: {'x': 1, 'z': 10, 'w': 40}
a: {'z': 10, 'w': 40}
ChainMap({'x': 3}, {'x': 2}, {'x': 1})
3
ChainMap({'x': 2}, {'x': 1})
2
ChainMap({'x': 1})
1
>>>
Copier après la connexion

De plus, ChainMap fonctionne sur le dictionnaire original, ce qui peut éviter certains choses désagréables. Un comportement insatisfaisant, par exemple, des modifications apportées à l'un des dictionnaires originaux ne peuvent pas être reflétées dans le dictionnaire fusionné.

>>> a={'x':1,'z':3}
>>> b={'y':2,'z':4}
>>> merged=ChainMap(a,b)
>>> merged
ChainMap({'x': 1, 'z': 3}, {'y': 2, 'z': 4})
>>> merged['x']
1
>>> a['x']=55
>>> merged['x']
55
>>> merged
ChainMap({'x': 55, 'z': 3}, {'y': 2, 'z': 4})
>>>
Copier après la connexion

(le code est extrait de "Python Cookbook")

Recommandations associées :

Python livre de recettes (Chaînes et texte) Opérations de fractionnement de chaînes pour un nombre quelconque de délimiteurs

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!