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要求存放的键值对映射的键必 ...
随机推荐
- 简述同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区别
POSIX 同步IO.异步IO.阻塞IO.非阻塞IO,这几个词常见于各种各样的与网络相关的文章之中,往往不同上下文中它们的意思是不一样的,以致于我在很长一段时间对此感到困惑,所以想写一篇文章整理一下. ...
- 初识gauge自动化测试框架(二)
看到一些同学对该工具有点一兴趣,那么我将继续介绍Gauge自动化测试工具. Gauge本质上一个BDD(Behavior Driven Development)测试框架.所以,首先你要了解BDD的操作 ...
- 云计算openstack共享组件(2)——Memcache 缓存系统
一.缓存系统 在大型海量并发访问网站及openstack等集群中,对于关系型数据库,尤其是大型关系型数据库,如果对其进行每秒上万次的并发访问,并且每次访问都在一个有上亿条记录的数据表中查询某条记录时, ...
- 菜鸟学python之大数据的初认识
这次作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2639 1.这些分析所采用数据来源是什么? 国家数据库:中国铁路 ...
- wince可用的7-zip
7-zip下载 7-zip
- css 3 新特性
CSS3的新特性大致分为以下六类 1.CSS3选择器 2.CSS3边框与圆角 3.CSS3背景与渐变 4.CSS3过渡 5.CSS3变换 6.CSS3动画 下面分别说一说以上六类都有哪些内容 CSS3 ...
- Spring boot的第一个demo
由于SpringBoot的问世使开发的门槛有降低了不少,就其这一点,早已使其名声大振,如雷贯耳.我之前是使用spring开发的,刚才使用了spring boot试验了一下,果然名不虚传,开发速度贼快. ...
- hdu4843(NOI2000) 古城之谜 (trie树+DP)
Description 著名的考古学家石教授在云梦高原上发现了一处古代城市遗址.让教授欣喜的是在这个他称为冰峰城(Ice-Peak City)的城市中有12块巨大石碑,上面刻着用某种文字书写的资料,他 ...
- 关于Tomcat
详情转自:http://blog.csdn.net/jiuqiyuliang/article/details/48094373和http://blog.csdn.net/u012934325/arti ...
- CentOS安装python3.6
下载Python安装包 cd /usr/local/src 编译时要提前装好gcc编译器和zlib zlib-devel 1.下载文件 wget https://www.python.org/ftp/ ...