Home >Backend Development >Python Tutorial >Python cookbook (data structures and algorithms) combines multiple mappings into a single mapping
This article mainly introduces the method of Python cookbook (data structure and algorithm) to merge multiple mappings into a single mapping. It analyzes the implementation skills related to Python dictionary mapping merging operations in the form of examples. Friends in need can refer to the following
The examples in this article describe Python's method of merging multiple mappings into a single mapping. Share it with everyone for your reference, as follows:
Question: Logically merge multiple dictionaries or mappings into a single mapping structure to perform certain specific operations, For example, looking up a value or checking whether a key exists
Solution: Use the ChainMap
class in the collections
module
ChainMap
Accepts multiple mappings and logically behaves them as a single mapping structure. These mappings are not literally merged together. Instead, ChainMap
simply maintains a list recording the underlying mapping relationships, and then redefines common dictionary operations to scan this list.
# 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 >>>
In addition, ChainMap operates on the original dictionary, which can avoid some unpleasant behaviors. For example, modifications to any of the original dictionaries cannot be reflected in the merged dictionary.
>>> 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}) >>>
(Code is excerpted from "Python Cookbook")
Related recommendations:
Python cookbook(String with text) Split string operations for any number of delimiters
The above is the detailed content of Python cookbook (data structures and algorithms) combines multiple mappings into a single mapping. For more information, please follow other related articles on the PHP Chinese website!