字典dict
一、字典概念
- python的数据结构之一,与列表一样是可变序列
- 以键值对方式存储数据,必须根据key找到vaule的位置 - 字典是一个无序的序列
二、字典的创建
- 使用花括号
py
scores = {'张三':98,'李四':100,'王五':77}
- 使用内置函数dict()
py
dict(name='jack',age=25)
三、字典的常用操作
- 字典的元素获取
PY
scores = {'张三':95,'李四':100,'王五':77}
scores['张三']
scores.get('张三')
[]和get()取值区别: (1)[]取值时如果字典中不存在指定的key会抛出keyError异常 (2)get()取值取值时如果字典中不存在指定的key并不会抛出异常,而是返回None,可以设置默认的value指定当key不存在时返回 scores.get('小六',88)
- key的判断
PY
scores = {'张三':95,'李四':100,'王五':77}
print('张三' in scores) #True
print('张三' not in scores) #False
- 字典元素的新增
PY
scores = {'张三':95,'李四':100,'王五':77}
scores['小六'] = 88 # 新增
scores['小六'] = 99 #修改
print(scores) #{'张三': 95, '李四': 100, '王五': 77, '小六': 99}
- 字典元素的删除
PY
scores = {'张三':95,'李四':100,'王五':77}
del scores['张三'] #删除指定的键值对
print(scores) #{'李四': 100, '王五': 77}
scores.clear() #清空列表元素
print(scores) #{}
四、获取字典的视图
keys()获取字典里所有的key valuse()获取字典里所有的valuse items()获取字典里所有的键值对
五、字典的遍历
py
scores = {'张三':95,'李四':100,'王五':77}
for item in scores:
print(item,scores[item])
六、字典的特点
- 字典的所有元素都是以键值对形式存储,键不可以重复,值可以重复
- 字典的元素是无序的
- 字典的key必须是不可变的对象
- 字典也可以根据需要动态的伸缩(在使用之前无需分配空间,会根据元素的增加而增加)
- 字典会浪费较大的内存,是一种使用空间换时间的数据结构
七、字典生成式
py
items = ['Fruits','Books','Others']
prices = [96,78,85]
a = {item.upper() : price for item,price in zip(items,prices)}
print(a) #{'FRUITS': 96, 'BOOKS': 78, 'OTHERS': 85}
集合set
一、集合概念
- 是python语言的内置数据结构
- 与列表、字典一样都属于可变类型的序列
- 集合相当于是没有value的字典
二、集合的创建
- 使用{}
py
s = {'python','hello',90,90} #集合元素不允许重复
print(s) #{'hello', 90, 'python'}
- 使用内置函数set()
py
print(set(range(6))) #{0, 1, 2, 3, 4, 5}
print(set([1, 2, 3, 4, 5, 5, 6, 6])) #{1, 2, 3, 4, 5, 6}
print(set({1, 2, 3, 4, 4, 5})) #{1, 2, 3, 4, 5}
print(set('python')) #{'y', 'n', 'p', 'o', 't', 'h'}
print(set()) #空集合
三、集合的操作
- 判断操作
- not或in
- 新增操作
- 调用add()方法,一次添加一个元素
- 调用undate()方法至少添加一个元素
- 删除操作
- 调用remove()方法,一次删除一个指定元素,如果指定元素不存在则抛出KeyError
- 调用discard()方法,一次删除一个指定元素,,如果指定元素不存在不抛出异常
- 调用pop()方法,一次只删除任意一个元素
- 调用clear()方法,清空集合
四、集合间的关系
- 通过运算符==或!=判断两个集合是否相等
py
s1 = {10,20,40,30,50}
s2 = {50,10,30,40,20}
print(s1 == s2) #True
print(s1 != s2) #False
- 通过issubset方法判断一个集合是否是另一个集合的子集 通过issuperset方法判断一个集合是否是另一个集合的超集
py
s1 = {10,20,30,40,50}
s2 = {10,20,30}
s3 = {10,20,90}
print(s2.issubset(s1)) #True
print(s3.issubset(s1)) #False
print(s1.issuperset(s2)) #True
- 通过isdisjoint方法判断两个几个是否有交集
py
s1 = {10,20,30,40,50}
s2 = {10,20,30}
s3 = {60,70,90}
print(s1.isdisjoint(s2)) #False
print(s1.isdisjoint(s3)) #True
五、集合的数学操作
py
s1 = {10,30,40,50,60}
s2 = {20,30,40,50,80}
'''交集操作'''
print(s1.intersection(s2)) #{40, 50, 30}
print(s1 & s2) #{40, 50, 30}
'''并集操作'''
print(s1.union(s2)) #{40, 10, 80, 50, 20, 60, 30}
print(s1 | s2) #{40, 10, 80, 50, 20, 60, 30}
'''差集操作'''
print(s1.difference(s2)) #{10, 60}
print(s1 - s2) #{10, 60}
'''对称差集'''
print(s1.symmetric_difference(s2)) #{80, 20, 10, 60}
print(s1 ^ s2) #{80, 20, 10, 60}