Set
集合(set)是一个无序的不重复元素序列。
本质上是一张哈希表
注意:不支持索引,重复,连接,切片
创建集合
可以使用大括号 { } 或者 set() 函数创建集合
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
parame = {value01,value02,...}
或者
set(value)
添加元素
添加单个元素
使用add()添加单个元素
basket = {'apple', 'orange', 'pear', 'banana'}
basket.add('strawberry')
print(basket) # {'banana', 'pear', 'apple', 'strawberry', 'orange'}
添加特殊元素
使用update()添加特殊元素
注意:参数可以是列表,元组,字典等
basket = {'apple', 'orange', 'pear', 'banana'}
tup = ('Google', 1997, 2000)
basket.update(tup)
print(basket) # {'apple', 1997, 2000, 'banana', 'pear', 'Google', 'orange'}
移除元素
remove()
使用remove()移除元素
basket = {'apple', 'orange', 'pear', 'banana'}
basket.remove('banana')
print(basket) # {'apple', 'orange', 'pear'}
注意:如果元素不存在,则会发生错误
basket = {'apple', 'orange', 'pear', 'banana'}
basket.remove('strawberry')
# Traceback (most recent call last):
# File "main.py", line 16, in <module>
# basket.remove('strawberry')
# KeyError: 'strawberry'
discard()
使用discard()移除集合中的元素,且如果元素不存在,不会发生错误
basket = {'apple', 'orange', 'pear', 'banana'}
basket.discard('strawberry')
print(basket) # {'banana', 'apple', 'pear', 'orange'}
pop()
设置随机删除集合中的一个元素
basket = {'apple', 'orange', 'pear', 'banana'}
basket.pop()
print(basket) # {'apple', 'orange', 'pear'}
注意:set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
清空集合
可以使用clear()删除集合中的元素
basket = {'apple', 'orange', 'pear', 'banana'}
basket.clear()
print(basket) # set()
判断集合中有没有该元素
x in s
判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。
basket = {'apple', 'orange', 'pear', 'banana'}
print('apple' in basket) # True
特性
字段不重复
集合内的字段是不可重复的
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # {'apple', 'orange', 'banana', 'pear'}
集合间的运算
| 运算 | 作用 | |
|---|---|---|
| a - b | 集合a中包含而集合b中不包含的元素 | |
| a | b | 集合a或b中包含的所有元素 |
| a & b | 集合a和b中都包含了的元素 | |
| a ^ b | 不同时包含于a和b的元素 |
Dictionary
字典是一系列由键(key)和值(value)配对组成的元素的集合
字典是另一种可变容器模型,且可存储任意类型对象。
python3.7之后,字典底层是2个数组,一个为一维数组,存放hash(key)取余后的值作为数组的索引,对应索引位置存放键值对在二维数组的索引位置。因此二维数组是一个有序的数组。
创建字典
{}创建
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号( , )分割,整个字典包括在花括号 {} 中
d = {key1 : value1, key2 : value2, key3 : value3 }
注意:
- 键必须是唯一的,但值则不必。
- 值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
tinydict = { 'abc': 123, 98.6: 37 }
内建函数dict()创建字典
使用dict() 创建字典
emptyDict = dict()
访问字典里的值
通过访问键的值访问字典的值
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("tinydict['Name']: ", tinydict['Name']) #tinydict['Name']: Runoob
如果访问的值没有,会报错KeyError
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("tinydict['Alice']: ", tinydict['Alice'])
# Traceback (most recent call last):
# File "main.py", line 17, in <module>
# print("tinydict['Alice']: ", tinydict['Alice'])
# KeyError: 'Alice'
修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
tinydict['Age'] = 8 # 更新 Age
tinydict['School'] = "天天学习" # 添加信息
print ("tinydict['Age']: ", tinydict['Age']) # tinydict['Age']: 8
print ("tinydict['School']: ", tinydict['School']) # tinydict['School']: 天天学习
删除字典元素
删除键值对
用del删除键值对
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del tinydict['Name'] # 删除键 'Name'
print(tinydict) # {'Age': 7, 'Class': 'First'}
清空字典
clear()函数清空字典,删除字典内的全部元素
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
tinydict.clear()
print(tinydict) # {}
删除字典
使用del删除字典,之后对其的访问都是违法的
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del tinydict
print(tinydict)
# Traceback (most recent call last):
# File "main.py", line 18, in <module>
# print(tinydict)
# NameError: name 'tinydict' is not defined
特性
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
- 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
- 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
- 字典中的元素是无序的
- 字典会浪费较大的内存,是一种使用空间换时间的数据结构。(因为哈希表中有空的格子)