ホームページ >バックエンド開発 >Python チュートリアル >Python クックブック (データ構造とアルゴリズム) は複数のマッピングを 1 つのマッピングにマージします
この記事では、複数のマッピングを 1 つのマッピングにマージする Python クックブックの方法 (データ構造とアルゴリズム) を主に紹介し、Python 辞書マッピングのマージ操作に関連する実装スキルをサンプルの形で分析します。この記事の例
複数のマッピングを 1 つのマッピングにマージする Python の方法について説明します。以下のように、参考のために全員と共有してください:
質問: 複数の辞書またはマップを論理的に単一のマッピング構造に結合して、値の検索やキーが存在するかどうかの確認などの特定の操作を実行します
解決策: collections
モジュールの ChainMap
クラスを使用します。 collections
模块中的ChainMap
类
ChainMap
可接受多个映射然后在逻辑上使它们表现为一个单独的映射结构。这些映射在字面上并不会合并在一起。相反,ChainMap
ChainMap
は複数のマッピングを受け入れ、それらを別のマッピング構造として論理的に動作させることができます。これらのマッピングは文字通りマージされるわけではありません。対照的に、ChainMap
は、基礎となるマッピング関係を記録するリストを単純に保持し、このリストをスキャンするための一般的な辞書操作を再定義します。
# 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 >>>さらに、ChainMap は元の辞書で動作するため、マージされた辞書に反映できない元の辞書への変更など、不快な動作を回避できます。
>>> 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}) >>>(コードは「Python クックブック」から引用) 関連する推奨事項:
Python クックブック (文字列とテキスト) 任意の数の区切り文字で文字列を分割する
以上がPython クックブック (データ構造とアルゴリズム) は複数のマッピングを 1 つのマッピングにマージしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。