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

2018-08-20 15:34:27 309浏览

本篇文章扣丁学堂Python培训小编和大家分享一下将多个映射合并为单个映射的方法,对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开发小编给大家推荐口碑良好的扣丁学堂,扣丁学堂有专业老师制定的Python路线图辅助学员学习,此外还有与时俱进的Python课程体系和大量的Python视频教程供学员观看学习,想要学好Python开发技术的小伙伴快快行动吧。扣丁学堂Python技术交流群:279521237。


扣丁学堂微信公众号 

关注微信公众号获取更多学习资料 

 

查看更多关于"Python开发资讯"的相关文章>



标签: Python培训 Python视频教程 Python基础教程 python安装教程 Python核心编程 Python在线教程 Python在线视频 Python在线学习 扣丁学堂Python视频教程 将多个映射合并为单个映射的方法

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号