Maison >développement back-end >Tutoriel Python >Le livre de recettes Python (structures de données et algorithmes) combine plusieurs mappages en un seul mappage
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'])
>>> ================================ 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 >>>
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}) >>>
(le code est extrait de "Python Cookbook")
Recommandations associées :
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!