python大法好——字典、集合
字典
前面我们说过列表,它适合于将值组织到一个结构中并且通过编号对其进行引用。字典则是通过名字来引用值的数据结构,并且把这种数据结构称为映射,字典中的值没有特殊的顺序,都存储在一个特定的键(key)下,键可以是数字、字符串甚至元组。字典也是python中唯一内建的映射类型。
特性:
key-value结构。
key必须可hash,且必须为不可变。
数据类型必须为一。
可存放任意多值可修改,可以不唯一。
无序
查询速度快。
方法:
(1) get
get是个更宽松的访问字典项的方法,当get访问一个不存在的键时,不会报错而会得到None值,它适用在程序 中用户若输入的是我们没有准备的值时可以作出合理的反应。
(2) update
update方法可以利用一个字典项更新另外一个字典,提供的字典中的项会被添加到旧的字典中,若有相同的项则会进行覆盖。
(3) fromkeys
fromkeys方法使用给定的键建立新的字典,每个键都对应一个默认的值None(也可以自己设立默认值),可以和dict函数一起使用。
(4) setdefault
setdefault方法与get方法类似,可以获得给定键的值,除此之外它还能在字典中不含有给定键的情况下设定相应的键值。
(5) items和iteritems
items方法将字典中所有的项以列表方式返回,但是在返回的时候没有特定的顺序;iteritems方法的作用大致相同,但是会返回一个迭代器对象而不是列表。
(6) copy
copy方法返回一个具有相同键—值对的新字典(这个方法实现的是浅复制)
注意: 在副本中替换值的时候原始字典不受影响,但是当修改副本中的值的时候原始字典也会改变。
(7) pop和popitem
pop方法用来获得对应于给定键的值,然后将键—值对从字典中删除。
popitem方法类似于list.pop,后者会弹出列表的最后一个元素,但不同的是因为字典没有顺序,所以popitem会弹出随机的项。
(8) clear
clear方法清除字典中的所有项,无返回值
2.集合
在 Python 中,集合由内置的 set 类型定义。
要创建集合,需要将所有项(元素)放在花括号({})内,以逗号(,)分隔。
>>> s = {'P', 'y', 't', 'h', 'o', 'n'}
>>> type(s)
<class 'set'>
集合可以有任意数量的元素,它们可以是不同的类型(例如:数字、元组、字符串等)。但是,集合不能有可变元素(例如:列表、集合或字典)。
>>> s = {1, 2, 3} # 整形的集合
>>>
>>> s = {1.0, 'Python', (1, 2, 3)} # 混合类型的集合
>>>
>>> s = set(['P', 'y']) # 从列表创建
>>>
>>> s = {1, 2, [3, 4]} # 不能有可变元素
...
TypeError: unhashable type: 'list'
创建空集合比较特殊。在 Python 中,空花括号({})用于创建空字典。要创建一个没有任何元素的集合,使用 set() 函数(不要包含任何参数)。
>>> d = {} # 空字典
>>> type(d)
<class 'dict'>
>>>
>>> s = set() # 空集合
>>> type(s)
<class 'set'>
集合之间也可进行数学集合运算(例如:并集、交集等),可用相应的操作符或方法来实现。
子集
子集,为某个集合中一部分的集合,故亦称部分集合。
使用操作符 < 执行子集操作,同样地,也可使用方法 issubset() 完成。
>>> C = set('ab')
>>>
>>> C < A
True
>>>
>>> C < B
False
>>>
>>> C.issubset(A)
True
并集
一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。
使用操作符 | 执行并集操作,同样地,也可使用方法 union() 完成。
>>> A | B
{'e', 'f', 'd', 'c', 'b', 'a'}
>>>
>>> A.union(B)
{'e', 'f', 'd', 'c', 'b', 'a'}
差集
A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合
使用操作符 - 执行差集操作,同样地,也可使用方法 difference() 完成。
>>> A - B
{'b', 'a'}
>>>
>>> A.difference(B)
{'b', 'a'}
对称差
两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。
使用 ^ 操作符执行差集操作,同样地,也可使用方法 symmetric_difference() 完成。
>>> A ^ B
{'b', 'e', 'f', 'a'}
>>>
>>> A.symmetric_difference(B)
{'b', 'e', 'f', 'a'}
1.add 向集合中添加元素
2.clear 清空集合
3.copy 返回集合的浅拷贝
4.pop 删除并返回任意的集合元素(如果集合为空,会引发 KeyError)
5.remove 删除集合中的一个元素(如果元素不存在,会引发 KeyError)
6.discard 删除集合中的一个元素(如果元素不存在,则不执行任何操作)
7.intersection 将两个集合的交集作为一个新集合返回
8.union 将集合的并集作为一个新集合返回
9.difference 将两个或多个集合的差集作为一个新集合返回
10. symmetric_difference 将两个集合的对称差作为一个新集合返回(两个集合合并删除相同部分,其余保留)
python大法好——字典、集合的更多相关文章
- python3笔记十八:python列表元组字典集合文件操作
一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle #数据持久性模块 #封装的方法def OptionData(data,path): # ...
- python 元祖字典集合
一.元祖 1.用途:记录多个值,当多个值没有改变的需求,元祖不能修改,但元祖里的数据的数据可以修改. 2.定义方式:在()内用逗号分隔开多个任意值. 思考:如果定义一个只有一个一个值的元祖. # t ...
- python 列表 元组 字典 集合
列表 lst = [i for i in range(10)] 切片 # 把下标小于2的显示出来 print(lst[:2]) # 把10个数有大到小输出 print(lst[::-1]) # 把下标 ...
- Python 列表&元组&字典&集合
列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片.合并.删除等操作 可通过索引来向指定位置插入元素 可通过po ...
- Python 全栈开发二 python基础 字符串 字典 集合
一.字符串 1,在python中,字符串是最为常见的数据类型,一般情况下用引号来创建字符串. >>ch = "wallace" >>ch1 = 'walla ...
- Python列表,元组,字典,集合详细操作
菜鸟学Python第五天 数据类型常用操作及内置方法 列表(list) ======================================基本使用====================== ...
- Python学习之字典集合篇
lambda表达式:起到一个函数速写的作用,允许在代码内嵌入一个函数的定义; filter()函数:1.用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表.2.接收两个参数,第一个为 ...
- Python基础5:列表 元祖 字典 集合
[ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...
- python基础之字典dict和集合set
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...
随机推荐
- IO练习文件读取
import java.io.*; public class CheckFile { private File f ; private BufferedReader bdr; private char ...
- 黄聪:jquery+Datatables出现数据过长,表格不自动换行,columns设置width失效的办法
添加下面的CSS代码即可: table.dataTable.nowrap th, table.dataTable.nowrap td{white-space: normal !important;}
- 将mongo设置为windows的服务
原文链接 https://mp.weixin.qq.com/s/rmWcvjZFJb3z_5M8UPWAPQ PHP的mongo扩展: 首先 下载一个PHP的mongo扩展, 地址:http://do ...
- 胖子哥的大数据之路(9)-数据仓库金融行业数据逻辑模型FS-LDM
引言: 大数据不是海市蜃楼,万丈高楼平地起只是意淫,大数据发展还要从点滴做起,基于大数据构建国家级.行业级数据中心的项目会越来越多,大数据只是技术,而非解决方案,同样面临数据组织模式,数据逻辑模式的问 ...
- [蓝桥杯]ALGO-90.算法训练_出现次数最多的整数
问题描述 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20.然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来.如果有两 ...
- Neo4j 第三篇:Cypher查询入门
本文转载自:https://www.cnblogs.com/ljhdo/p/5516793.html Neo4j使用Cypher查询图形数据,Cypher是描述性的图形查询语言,语法简单,功能强大,由 ...
- CenOS下搭建PPTP服务
公司生产环境使用的是阿里云主机,采用的是两台nginx主机进行反向代理,现在需要内网一台服务器能够访问公网,所以在nginx服务器上搭建了VPN服务,用于进行内网访问公网. 系统环境:CenOS 6. ...
- [UE4]蓝图比C++慢10倍,是吗?
首先,蓝图肯定是比C++慢. 任何脚本语言(需要解释执行的语言),和C++相比可能达到十倍甚至百倍的差距.比如Java.Python.Lua,JS. 脚本语言是运行在虚拟机上的,所以它们比起直接运行的 ...
- [UE4]根据时间、速度进行插值:Finterp to Constant
一般在“Tick”事件中使用: Current:当前值 Target:期望的目标值 Delta Time:时间变化值. Interp Speed:插值速度 返回值:从“当前值”过渡到“期望的目标值”的 ...
- [UE4]蓝图的颜色
一.蓝色:调用的函数或事件 二.绿色:纯函数 三.紫色:函数定义 四.灰色:宏 五.白色:执行线 六.事件的定义 另外还有数据类型的颜色: 执行线是白色,数据线颜色跟数据量类型一致.