返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现字典序列ChainMap
  • 176
分享到

Python实现字典序列ChainMap

Python字典序列ChainMapPython字典序列 2022-06-02 22:06:33 176人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录前言ChainMap重排列更新值前言 容器数据类型包括数组list,字典dict以及元组tuple等。本篇,将详细介绍ChainMap字典序列的使用。 ChainMap ChainMap类管理的是一个字典序列,并

目录
  • 前言
  • ChainMap
  • 重排列
  • 更新值

前言

容器数据类型包括数组list,字典dict以及元组tuple等。本篇,将详细介绍ChainMap字典序列的使用。

ChainMap

ChainMap类管理的是一个字典序列,并按其出现的顺序搜索以查找与键关联的值。ChainMap提供了一个很好的“上下文”容器,因此可以把它看成一个栈,栈增长时发生变更,栈收缩时这些变更被丢弃。

下面,我们来看看其基本的使用规则:


import collections

a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }

col = collections.ChainMap(a, b)
# 和普通字典一样访问
print(col["a"])
print(list(col.keys()), list(col.values()))

for key, value in col.items():
    print(key, value)

运行之后,效果如下:

常规应用

可以看到,在相同的key值情况下,只有子映射a的值。这也就是说明ChainMap是按子映射传递到构造函数的顺序来搜索这些子映射。

重排列

其实,这种子映射的顺序在maps属性中,我们直接通过它增加新映射,或者改变映射的顺序。比如上面映射c是取的a字典中的值,那么我们直接颠倒顺序,就可以取b的值。


import collections

a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }

col = collections.ChainMap(a, b)
#颠倒顺序
col.maps = list(reversed(col.maps))

for key, value in col.items():
    print(key, value)

运行之后,效果如下:

重排列

这里函数reversed()很好理解,就是颠倒英文的意思。

更新值

ChainMap归并子映射的值,应该如何更改呢?其实不管你是直接更新基本的子映射值,还是更新ChainMap对象的值。都会将子映射与ChainMap对象的值同时改变。


import collections

a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }

col = collections.ChainMap(a, b)
col['c'] = 'Z'
print(col['c'])
#变更回来
col['c'] = 'c'
a['c'] = 'Z'
print(col['c'])

运行之后,效果如下:

值

那么如果保证不更改掉原理的底层的数据结构呢?答案是通过new_child()创建一个新的ChainMap。具体代码如下:


import collections

a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }

col = collections.ChainMap(a, b)
col2 = col.new_child()

print(col)
print(col2)
print("--------------------------")
col2['c'] = 'Z'
print(col)
print(col2)

运行之后,效果如下:

效果

可以看到,new_child()提供了一个额外的映射在最前面。正是这种基于堆栈的思维,我们很容易在一次迭代中增加或更新值,然后在下一次迭代中丢弃这些改变。

到此这篇关于python实现字典序列ChainMap的文章就介绍到这了,更多相关Python 字典序列ChainMap内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现字典序列ChainMap

本文链接: https://lsjlt.com/news/10972.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python实现字典序列ChainMap
    目录前言ChainMap重排列更新值前言 容器数据类型包括数组list,字典dict以及元组tuple等。本篇,将详细介绍ChainMap字典序列的使用。 ChainMap ChainMap类管理的是一个字典序列,并...
    99+
    2022-06-02
    Python 字典序列ChainMap Python 字典序列
  • python中实现有序字典
      我们应该会在实际使用中发现python的字典是无序的,譬如说这样>>> a = {'key1':'a','key2':'b','key3':'c','key4':'d','key5':'e'} >>>...
    99+
    2023-01-31
    字典 python
  • python的序列遍历和字典遍历的实现方法
    这篇文章主要介绍“python的序列遍历和字典遍历的实现方法”,在日常操作中,相信很多人在python的序列遍历和字典遍历的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • python如何实现字典键值列表
    这篇文章主要介绍了python如何实现字典键值列表,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。字典键值列表##不推荐 for k...
    99+
    2024-04-02
  • Python实现字典依据value排序
    具体内容如下: 使用sorted将字典按照其value大小排序 >>> record = {'a':89, 'b':86, 'c':99, 'd':100} >>>...
    99+
    2022-06-04
    字典 Python
  • python中怎么实现字典排序
    python中怎么实现字典排序,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。<lo:  ="" j="lo&quo...
    99+
    2023-06-04
  • python有序字典
    最近的django开发中用到了有序字典,所以研究了一下,以下。示例:有序字典和通常字典类似,只是它可以记录元素插入其中的顺序,而一般字典是会以任意的顺序迭代的。普通字典:由上面的结果可以看出对普通字典进行遍历,输出结果是无序的。下面是有序字...
    99+
    2023-01-31
    字典 python
  • Java序列化与字典功能的序列化实例分析
    这篇文章主要介绍了Java序列化与字典功能的序列化实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java序列化与字典功能的序列化实例分析文章都会有所收获,下面我们一起来看看吧。两种解决方案前端查询字典数...
    99+
    2023-07-02
  • python字典的hashtable实现
    python字典的key-value原理属于hashtable的范畴。 关于hashtable的一篇博客 关于python字典实现原理的一篇博客 ...
    99+
    2023-01-31
    字典 python hashtable
  • python列表、元组、字典
    1.列表列表是由一序列特定顺序排列的元素组成的。可以把字符串,数字,字典等都可以任何东西加入到列表中,列表中的元素之间没有任何关系。列表也是自带下标的,默认也还是从0开始。列表常用方括号表示,即:[],元素用逗号隔开。例子:a = ["hu...
    99+
    2023-01-31
    字典 列表 python
  • python(3)字典及列表
    列表list:打了激素的数组   数组是只能存储同一种数据类型的结构; 数组: scores[43] = [12, 12.0, "hello"] 元组tuple # 定义列表 li = [1, 1.0, "westos", (1,2,3,...
    99+
    2023-01-31
    字典 列表 python
  • python 列表 字典转json
    一、Dictionary 转为JSON 将dict转为JSON,这里利用包json import json aItem = {} aItem["id"] = "2203" aItem["title"] = "title" aItem["...
    99+
    2023-01-31
    字典 列表 python
  • python中itemgetter函数如何实现字典排序
    这篇文章将为大家详细讲解有关python中itemgetter函数如何实现字典排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科...
    99+
    2023-06-14
  • python字典嵌套字典实例
    日志文件样式:2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] from: <lilh@test.com><router>, to: <xie...
    99+
    2023-01-31
    字典 嵌套 实例
  • 如何利用python实现列表嵌套字典取值
    目录一、实例二、解决思路三、代码示例一、实例 将以下列表的backup_unit_id全部提取出来 示例: dbs = [{         "backup_unit_id": 16...
    99+
    2024-04-02
  • Python列表推导式与字典推导式的实现
    目录列表推导式 for 循环写法 列表推导式写法 列表推导式还支持嵌套 字典推导式 元组推导式与集合推导式 总结 在 Python 中推导式是一种非常 Pythonic 的知识,本篇...
    99+
    2024-04-02
  • 怎么利用python实现列表嵌套字典取值
    这篇文章主要介绍了怎么利用python实现列表嵌套字典取值的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用python实现列表嵌套字典取值文章都会有所收获,下面我们一起来看看吧。一、实例将以下列表的bac...
    99+
    2023-07-02
  • python字典翻转的实现
    目录第1关 创建大学英语四级单词字典第2关 合并大学英语四六级词汇字典 第3关 查单词输出中文释义第4关 删除字典中特定字母开头的单词第5关 单词英汉记忆训练第1关 创建大...
    99+
    2023-05-20
    python字典翻转 python翻转字典
  • 9. python 列表、元组、字典
    1.列表a = ['a', 'b', 'c', 'abc']## append  末尾追加a.append('hello')print (a)['a', 'b', 'c', 'abc', 'hello']## pop 末尾删除a.pop(...
    99+
    2023-01-31
    字典 列表 python
  • python之列表、元组、字典
    1描述 打了激素的数组数组是只能存储同一数据类型的结构列表:可以存储多数数据类型的数组 2 定义列表: 元组和列表的不同:元组是不可变对象而列表是可变对象 3 列表的特性: 1 索引 分为前向索引、反向索引和多重索引 2...
    99+
    2023-01-31
    字典 列表 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作