字典与集合的总结(持续更新中)
1. 总述
第五章的课程结束了,以下内容总结了课本上这一章的重点知识:
2. 字典
2.1 创建字典
1) 直接创建字典
通过大括号的形式将若干“键值对”放在一起
{键1:值1,键2:值2,……}
2) 使用内置函数dict()创建字典
例如我们可以先写出列表之后将其转化为字典,方式如下:
items=[('俄罗斯',1707.5)] dic=dict(items)
以上程序就会生成一个dic={‘俄罗斯’:1707.5}的字典
注意:
1.键具有唯一性,字典中不允许出现相同的键(但是不同的键可以有相同的值)
2.键必须是不可变的类型,如列表就不可以作为键
3) 先定义一个空字典,之后添加
dict={}
dict['俄罗斯']=1707.5
2.2 访问字典
访问字典是通过键这个索引来访问值
举例如下:
dic={'俄罗斯':1707.5} print(dic['俄罗斯'])
最后我们可以看到会输出俄罗斯这个键在字典里所对应的值1707.5
2.3 更新字典
在字典创建之后通过
字典名[键]=值
的方法进行更新,如果键在字典中不存在就会执行添加条目的操作,如果存在就会执行修改条目
2.4 删除字典条目
1) del命令
del 字典名
整个字典全部删除del 字典名[键]
删掉字典中该键队对应的条目
2) pop()方法
pop(键)
会弹出指定的键对应的值,并删掉对应的条目
pop(键,默认值(如:找不到删除的条目))
区分于get()方法:后者并不会删掉条目
3) popitem()方法
会随机删除字典中的一个条目
那么问题来了如果删到字典没有条目了还会继续吗?答案是并不会,如下:
4) clear()方法
清空字典中的所有条目,但并不会删掉字典本身的结构。
2.5 查找字典条目
1) 运算符in
略
2) get()方法
get(键,默认值)
应用:利用
get(键,0)+1
可以用于统计字符出现次数,如下:
2.6 遍历字典
1) keys()
方法
可以遍历字典中所有的键
2) values()
方法
可以遍历字典中所有的值
3) items()方法
以
(键,值)
的形式返回所有的条目
2.7 字典的排序
sorted()方法
代码暂时略
2.8 合并字典
1) for循环
结合
items()
方法,利用k、v两个变量遍历被合并的字典再添加进需要合并的字典
2) update()方法
需要合并的字典名.update(被合并的字典名)
3) dict()函数
先将其转为两个列表后合并为一,再用dict()函数转为字典
dic=dict(duc1,**dic2)
注意:字典的键唯一,那么问题来了:两个字典具有相同的键但值不同,在合并之后会是怎样的呢?
键对应的值为被合并字典的值(如下)
3. 集合
- 集合互斥且唯一,因此可以帮助我们删掉重复的元素
- 集合的元素必须是不可变的就和字典的键一样,因此列表不可以充当元组中的元素
3.1 创建集合
1) 直接创建
{元素1,元素2,…}
2) set()函数创建
括号内为
字符串
,会将字符串去重后让字符变成元素括号内为
列表
,会将列表去重后使其元素变成集合的元素括号内为空,会创建一个空集合
注意:不可以用
{}
的方式创建空集合,因为这样创建后的类型为字典
3.2 集合的基本操作
1) 增
add()
方法update()
方法注意:增添之后会自动去除重复的元素
2) 删
remove()方法
S.remove(item)
将指定元素item从集合S中删掉,若不存在元素item将会报错
discard()
方法S.discard(item)
将指定元素item从集合S中删掉,若不存在元素item系统正常执行pop()
方法随机删除并返回一个元素
clear()
方法清空集合所有元素
3) 查
运算符in
4) 数学运算
- 并集
A|B
orA.union(B)
- 交集
A&B
orA.intersection(B)
- 差集
A-B
orA.difference(B)
- 对称差集
A^B
orA.symmetric_difference(B)
4.与C++中STL字典map/哈希表hash_map与集合set以及Java中的Map和Set使用方法的对比
先空着,周末有空再更
5.在各种习题中的运用
先空着,周末有空再更