这篇文章主要介绍了python cookbook(数据结构与算法)将多个映射合并为单个映射的方法,结合实例形式分析了python字典映射合并操作相关实现技巧,需要的朋友可以参考下
本文实例讲述了Python将多个映射合并为单个映射的方法。分享给大家供大家参考,具体如下:
问题:在逻辑上将多个字典或映射合并为一个单独的映射结构,以此执行某些特定的操作,比如查找值或者检查键是否存在
解决方案:利用collections模块中的ChainMap类
ChainMap可接受多个映射然后在逻辑上使它们表现为一个单独的映射结构。这些映射在字面上并不会合并在一起。相反,ChainMap只是简单地维护一个记录底层映射关系的列表,然后重定义常见的字典操作来扫描这个列表。
立即学习“Python免费学习笔记(深入)”;
# 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 Cookbook》)
相关推荐:
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作
以上就是Python cookbook(数据结构与算法)将多个映射合并为单个映射的详细内容,更多请关注php中文网其它相关文章!
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号