美文网首页扣丁学堂Python培训
Python视频教程之将多个映射合并为单个映射的方法

Python视频教程之将多个映射合并为单个映射的方法

作者: 994d14631d16 | 来源:发表于2018-09-03 14:37 被阅读1次

  本篇文章小编和大家分享一下将多个映射合并为单个映射的方法,对Python开发感兴趣想要学习或者是正在学习Python开发的小伙伴可以随小编一起来学习一下。文中会有详细的代码列出供大家参考,需要的小伙伴可以自行收藏哦。

Python视频教程

  问题:在逻辑上将多个字典或映射合并为一个单独的映射结构,以此执行某些特定的操作,比如查找值或者检查键是否存在。

  解决方案:利用collections模块中的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视频教程之将多个映射合并为单个映射的方法

    本文链接:https://www.haomeiwen.com/subject/blnbwftx.html