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()方法

会随机删除字典中的一个条目

那么问题来了如果删到字典没有条目了还会继续吗?答案是并不会,如下:

popitem()方法的演示

4) clear()方法

清空字典中的所有条目,但并不会删掉字典本身的结构。

2.5 查找字典条目

1) 运算符in

2) get()方法

  • get(键,默认值)

    应用:利用get(键,0)+1可以用于统计字符出现次数,如下:

    get()方法的应用

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 or A.union(B)
  • 交集 A&B or A.intersection(B)
  • 差集 A-B or A.difference(B)
  • 对称差集A^B or A.symmetric_difference(B)

4.与C++中STL字典map/哈希表hash_map与集合set以及Java中的Map和Set使用方法的对比

先空着,周末有空再更

5.在各种习题中的运用

先空着,周末有空再更