Collections -- OrderedDict类
普通dict(字典)在插入的时候并不记住元素的顺序,迭代器会根据散列表(哈希表)中存储的顺序来生成的。而OrderedDict则会记录元素的顺序,并且在迭代器输出时,会按现在记录的顺序进行遍历。
例:
创建有序字典:
import collections as c
dict = c.OrderedDict()
dict['Hello'] = '你好'
dict['cute'] = '可爱'
dict['busy'] = '忙碌'
dict['just'] = '刚才'
for k,v in dict.items():
print('{0} = {1}'.format(k,v))
结果:
Hello = 你好
cute = 可爱
busy = 忙碌
just = 刚才
clear():清空有序字典,清空字典所有项。,会输出一个OrderedDict()对象。
例:
print(dict.clear())
结果:
OrderedDict()
copy():浅拷贝
print(dict.copy())
结果:OrderedDict([('Hello', '你好'), ('cute', '可爱'), ('busy', '忙碌'), ('just', '刚才')])
pop():删除指定的键,如果找不到该键则报错。
例:
hello=dic.pop('Hello')
print(hello)
结果:
你好
clear()和pop()的区别:
pop():可以把有序字典看为一个栈,当需要其中某一个键值对的时候,可以使用pop()方法,根据键弹出这个值,赋给一个变量然后去使用这个值。弹出来栈里就没有该键了,如果你再去访问它就会报错。(pop()方法差不多都是这个原理,仅限于博主接触到的)
clear():是清空有序字典里的所有项,做了清空操作里面的键值对就会不存在。
items():返回有键值对组成的列表
例:
for k,v in dic.items():
print('{0} = {1}'.format(k,v))
结果:
Hello = 你好
cute = 可爱
busy = 忙碌
just = 刚才
当for循环里只有一个参数接收键值对时,它输出的是有序字典里面的每个元素,是用括号括起来的。
例:
for k in dic.items():
print('{0}'.format(k))
结果:
('Hello', '你好')
('cute', '可爱')
('busy', '忙碌')
('just', '刚才')
浅拷贝和深拷贝的区别:
Copy():浅拷贝,浅拷贝没有拷贝子对象,只是引用了子对象,所以改变原始数据的子对象,那浅拷贝后的数据也会被改变。可以看出,copy()方法都是浅拷贝。
例:
a=[1,2,3,4,[5,6]]
print(a)
b=a.copy()
print(b)
print('-' * 20)
a[4][0]=8
print(a)
print(b)
结果:
[1, 2, 3, 4, [5, 6]]
[1, 2, 3, 4, [5, 6]]
--------------------
[1, 2, 3, 4, [8, 6]]
[1, 2, 3, 4, [8, 6]]
首先定义一个列表a,再输出这个a,然后再拷贝一下a并且复制给b,并输出b,最后进行修改子对象里的第一个值修改为8,这时输出a和b它俩的子对象同时改为8.
Deepcopy():深拷贝,他和子对象一起拷贝了一个新的,并不是引用了子对象,所以改变原始数据的子对象,那拷贝后的数据也不会被改变。深拷贝需要导入copy模块,然后使用deepcopy()方法进行拷贝,需要给这个方法放入一个要拷贝的参数。
例:
import copy
a=[1,2,3,4,[5,6]]
print(a)
b=copy.deepcopy(a)
print(b)
print('-' * 20)
a[4][0]=8
print(a)
print(b)
结果:
[1, 2, 3, 4, [5, 6]]
[1, 2, 3, 4, [5, 6]]
--------------------
[1, 2, 3, 4, [8, 6]]
[1, 2, 3, 4, [5, 6]]
首先定义一个列表a,再输出这个a,然后再深拷贝一下a并且复制给b,并输出b,最后进行修改子对象里的第一个值修改为8,这时输出a的子对象改为8,b的子对象不会变。
Collections -- OrderedDict类的更多相关文章
- python之OrderedDict类
# OrderedDict类使用举例 # OrderedDict类的使用与字典相似,不同的是OrderedDict类会记录键值对的添加顺序 from collections import Ordere ...
- JAVA Collections工具类sort()排序方法
主要分析内容: 一.Collections工具类两种sort()方法 二.示例 一.Collections工具类两种sort()方法 格式一: public static <T extends ...
- python3 OrderedDict类(有序字典)
创建有序字典 import collections dic = collections.OrderedDict() dic['k1'] = 'v1' dic['k2'] = 'v2' dic['k3' ...
- Map集合、HashMap集合、LinkedHashMap集合、Hashtable集合、Collections工具类和模拟斗地主洗牌和发牌
1.Map集合概述和特点 * A:Map接口概述 * 查看API可以知道: * 将键映射到值的对象 * 一个映射不能包含重复的键 * 每个键最多 ...
- Arrays工具类和Collections工具类
集合知识点总结 Arrays工具类 .binarySearch() .sort() .fill() //填充 int[] array = new int[10]; Arrays.fill(array, ...
- Python collections.OrderedDict解决dict元素顺序问题
编程中遇到个问题,python json.loads时元素顺序可能会发生变化. 这个对于一些需要使用元素顺序来做一些策略的代码来说是致命的. 在网上查了查,结合自己的知识总结一下. 使用dict时,K ...
- day07(Set接口,HashSet类,hashcoad(),Collections工具类,Map集合)
Set接口 set接口的实现类特点 1.无序(取出来的顺序和存进去的数据的顺序不一致) 2.唯一(数据不能存相同的) 底层是用Map集合写的 HashSet类 实现了 set接口 唯一 ...
- 34、Collections工具类简介
Collections工具类简介 就像数组中的Arrays工具类一样,在集合里面也有跟Arrays类似的工具类Collections package com.sutaoyu.Collections; ...
- TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
TreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTo()方法,当插入元素时会回调该方法比较元素的大小.TreeMap要求存放的键值对映射的键必 ...
随机推荐
- Vue echarts
方式一.直接引入echarts 先 npm 安装 echarts npm install echarts --save // main.js import myCharts from './comm/ ...
- c#使用资源文件完成国际化
路径结构如下 namespace UnitTestProject1 { [TestClass] public class UnitTest1 { [TestMethod] public void Te ...
- [转帖]Zoom
Zoom美国上市:华裔创始人为大股东 创业想法来自“异地恋” https://baijiahao.baidu.com/s?id=1631166070308020680&wfr=spider&a ...
- 手指向上滑动跳转页面的JQ方法
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java 学习体系结构
一. JavaWEB 阶段课程体系结构 java se基础学习 二 .JavaWEB 阶段课程体系结构 第一阶段:前端开发阶段 1 HTML 2 CSS JS 3JS 4 JQuery ...
- GIt帮助文档之忽略某些文件——忽略python虚拟环境文件夹(转)
前言:为避免多个Python项目下安装库之间的冲突,或为轻松打包某个项目,建议在每个项目文件夹下安装Python虚拟环境,并在虚拟环境内进行操作,之后你安装的任何库和执行的任何程序都是在这个环境下运行 ...
- vs code 的便捷使用
鼠标滚动 改变字体大小 打开编辑器设置,搜索 editor.mouseWheelZoom 或者文本设置 自动保存 打开设置 搜索 autosave
- 抽奖大转盘 js代码
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- UOJ 7 NOI2014 购票
题意:给一棵树计算一下各个点在距离限制下以一定的费用公式通过不停地到祖先最后到达一号点的最小花费. 第一种做法:线段树维护带修凸壳.显然的,这个公式计算是p*x+q 所以肯定和斜率有关系.然后这题的d ...
- Django中related_name作用
相当于我们使用related代替了在通过一个对象查询出多个对象集合时,使用表名_set来获取 我先定义两个模型,一个是作者,一个是作者出版的书籍,算是一对多的类型. class Person(mode ...