字典和集合

一、字典
字典存储以“键–值”对形式存储。

哈希表(散列表):能够根据键值对key–value直接进行访问。
key–value映射到表中一个位置

如果出现映射地址冲突的情况 : 链接法 开放寻址法(python)

原理:
(1)为什么字典会加快检索效率
将key采用hash函数,映射成hashcode,hashcode对应value的地址
 (2)为什么字典的key是不可变类型
不可变类型才是可哈希的对象。对应一个对象只能产生一个hashcode(字符串、数值、字节)

字典的特点:
(1)字典中的键值对是无序的
(2)字典中的key不能重复
(3)字典中的key必须是不可变类型

1. 字典的定义

空字典 { }
2. 字典key和value的访问和修改
访问字典不能使用索引,因为无序
访问字典:字典{key} 返回value值
修改字典:字典[key]=赋值 方式
如果key已经存在,则修改value,如果不存在,则新创建键值对。
定义字典的时候如果出现重复的key,会使用最后一个赋值将之前的key–value覆盖。

字典和列表相比,牺牲空间来提高时间的一种方式。

3. 字典的运算

字典不支持 + * < >
字典支持is == in

4. 字典的相关方法

(1)追加相关
fromkeys(seq):创建同值不同键的字典
新建修改

setdefault():给字典进行追加键值对
原地修改
key键 value指定的值
如果没有value,会追加key键 None值得键值对
如果key已经存在,则不改变value
如果key不存在,则按照key,value进行追加

update: 字典追加key和value,一次性追加多个键值对。
原地修改
update对已有key进行更新,对不存在的key进行追加

(2)删除相关
pop(key):删除指定的键值对,返回被删除键值对的值
popitem():随机删除一个键值对,返回被删除的键值对的值。()里面不写参数
clear()请空字典

(3)获取相关
get(key) 获取key对应的value key如果不存在,不会报错,还可以指定出错信息

(4)copy

5. 字典的遍历

(1)keys
(2)values()

(3)items()

6. 字典推导式

{ 输出表达式 for k,v in 字典 }

把k的值变大2倍
看k,v交换位置可以交换key与value。

二、集合
集合的顶层是字典实现的,看成是value值为None的字典。
集合没有索引和切片。集合无法通过索引获得元素。想要获得元素,基本上只能遍历。
集合的特点:
(1)集合元素不重复
(2)无序
(3)集合元素是不可变类型
直接{ } 创建的是空字典,不是空集合,创建空集合只能使用set(),
len(set())返回集合长度
1.集合创建

2.集合的运算
不支持 + *
支持in is == < > <= >=
< > <= >= 父集和子集

S1是S2的子集,S2是S1的父集

差集- 并集| 交集& 相对差集

差集:返回在当前集合(被减)中存在,但不在参数集合(减)中的元素
(去除相同元素,被减对象不同返回值不同)
并集:合并两个集合,去除重复的元素

交集:&
相对差集:两个集合中不同时出现的元素

2.集合的相关方法
(1)添加 add()
(2)删除
remove(元素)通过指定删除的元素 原地删除
删除时如果元素不存在,会报错
discard(元素)通过指定删除的元素
删除时如果元素不存在,不报错
pop()随机删除一个元素,并返回被删除的元素。
(3)复制(不区分深拷贝和浅拷贝)

(4)交集、并集、差集、相对差集(对称差集)
差集:返回在当前集合中存在,但不在参数集合中的元素
difference()

带uodate的代表原地修改

交集:带update的是原地修改

并集:带update的是原地修改

对称差集(相对差集):带update的是原地修改

判断交集是否为空,返回Flase或True

判断当前是否为参数集合的子集

判断当前集合是否为参数集合的父集

4.集合的遍历

5.集合推导式
{ 输出表达式 for I in 集合 }

List tuple dict set 数据转换

列表(不含内嵌列表)、元组转换成set时,会去除重复元素。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值