集合与字典
一、创建集合
- 创建集合使用{}或set(),但是如果要创建空集合只能使用set(),因为{}用来创建空字典。
s1 = {10,20,30,40,50} print(s1) # 集合里面的内容是随机打印出来的,也就是无序的。 s2 = {10,30,20,10,30,40,50} print(s2) s3 = set('abcdefg') print(s3) s4 = set() print(type(s4)) s5 = {} print(type(s5)) ----------------------------------------------- {50, 20, 40, 10, 30} {50, 20, 40, 10, 30} {'f', 'a', 'd', 'b', 'g', 'c', 'e'} <class 'set'> <class 'dict'>
- 集合可以去掉重复数据:
- 集合数据是无序的,故不支持下标
二、集合常见操作方法
(一)增加数据
1、add()
s1 = {10,20,30,40,50} s1.add(100) s1.add(10) print(s1) ---------------------------- {50, 20, 100, 40, 10, 30}
- 因为集合有去重功能,所以,当向集合内追加的数据是当前集合已有数据的话,则不进行任何操作
2、update()
- 追加的数据是序列
s1 ={10,20} # s1.update(100) s1.update([100,200]) s1.update('abc') print(s1) ------------------------- {'c', 100, 200, 10, 'a', 20, 'b'}
(二)删除数据
1、remove()
- 删除集合中的指定数据,如果数据不存在则报错。
s1 = {10,20} s1.remove(10) print(s1) s1.remove(10) # 删除过后,如果再次删除,就会出现报错 print(s1) -------------------------------------- {20} Traceback (most recent call last): File "E:\python_basics\第十节课-集合与字典\集合.py", line 38, in <module> s1.remove(10) KeyError: 10
2、discard()
- 删除集合中指定数据,如果数据不存在也不会报错。
s1 = {10,20} s1.discard(10) print(s1) s1.discard(10) print(s1) ----------------------------- {20} {20}
3、pop()
- 删除集合中的最后一个数据,并返回这个数据。
s1 = {10,20,30,40,50} a = s1.pop() print(a) print(s1) -------------------- 50 {20, 40, 10, 30}
(三)查找数据
- in:判断数据在集合序列
- not in:判断数据不在集合序列
set1 = {1,2,3,4,5,6} if 25 not in set1: print("25不在集合里面") else: print("25在集合里面") ----------------------------- 25不在集合里面
三、创建字典
- 符号为大括号
- 数据为键值对形式出现
- 各个键值对之间用逗号隔开
# 有数据字典 dict1 = {'name':'张三','age':20,'gender':'男'} # 空字典 dict2 = {} dict3 = dict()
- 注意:一般称冒号前面的为键(key),简称k;冒号后面的为值(value),简称v
四、字典常见操作
(一)增加数据
- 写法:字典序列[key]=值
- 注意:如果key存在则修改这个key对应的值;如果key不存在则新增此键对。
dict1 = {'name':'张三','age':20,'gender':'男'} dict1['name'] = '李四' print(dict1) dict1['id'] = 110 print(dict1) ---------------------------- {'name': '李四', 'age': 20, 'gender': '男'} {'name': '李四', 'age': 20, 'gender': '男', 'id': 110}
- 注意字典为可变类型
(二)删除数据
- del()/del
- 删除字典或删除字典中指定键值对
dict1 = {'name':'张三','age':20,'gender':'男'} del dict1['gender'] print(dict1) --------------------------------- #{'name': '张三', 'age': 20} del(dict1) print(dict1)
- clear()
- 清空字典
dict1 = {'name':'张三','age':20,'gender':'男'} dict1.clear() print(dict1) --------------------- {}
(三)修改数据
- 写法:字典序列[key] = 值
- 注意:如果key存在则修改这个key对应的值;如果key不存在新增此键值对。
dict1 = {'name':'张三','age':20,'gender':'男'} dict1['name'] = '李四' print(dict1) ------------------ {'name': '李四', 'age': 20, 'gender': '男'}
(四)查找数据
- key根据键查找值
dict1 = {'name':'张三','age':20,'gender':'男'} print(dict1['name']) print(dict1['id']) # 报错 ------------------------- 张三
- get()
dict1 = {'name':'张三','age':20,'gender':'男'} print(dict1.get('name')) print(dict1.get('id',110)) print(dict1.get('id')) -------------------------------- 张三 110 None
- keys()
- 查找所有的键
dict1 = {'name':'张三','age':20,'gender':'男'} print(dict1.keys()) ---------------------- dict_keys(['name', 'age', 'gender'])
- values()
- 查找所有的值
t1 = {'name':'张三','age':20,'gender':'男'} print(dict1.values()) ----------------- dict_values(['张三', 20, '男'])
- items()
dict1 = {'name':'张三','age':20,'gender':'男'} print(dict1.items()) ---------------------------- dict_items([('name', '张三'), ('age', 20), ('gender', '男')])
五、字典的循环遍历
(一)遍历字典的key
dict1 = {'name':'张三','age':20,'gender':'男'} for key in dict1.keys(): print(key) --------------------------------- name age gender
(二)遍历字典的value
dict1 = {'name':'张三','age':20,'gender':'男'} for value in dict1.values(): print(value) ---------------------- 张三 20 男
-
若想直接得到里面的值,示例如下。
dict1 = {'name':'张三','age':20,'gender':'男'} for data in dict1.values(): print(data) ----------------- 张三 20 男
(三)遍历字典的元素
dict1 = {'name':'张三','age':20,'gender':'男'} for value in dict1.items(): print(value) ----------------------- ('name', '张三') ('age', 20) ('gender', '男')