day10_无序序列(散列类型)
文章目录
-
可变【列表、集合、字典】:该类型的值进行修改后,内存地址不变。
-
不可变【数值类型、字符串、元组】:该类型的内存地址随着值的修改而修改。
一、字典(dict)
字典是键值对(key_value)的方式存在;两者是一种映射关系(一一对应)。
1.1 字典的创建
键值对:{key:value}
本质:用键值对的方式对数据进行储存,对数据起一个解释说明的作用,可读性较好。
格式:
字典名 = {键1:值1,键2:值2...}
- 键是唯一不可变的。【重复的话,前一个值会被后一个值覆盖】
- 键可以是字符串、数字、元组;值可以是任意数据类型。【因为字典是起解释说明的作用,所以一般用字符串作为键】
示例:
dict1 = {'key1':1,'key2':2}
print(dict1)
#字典中的键重复,前一个值会被后一个值覆盖
dict2 = {1:'value1',
1:'value2',
(2,3):'value3'}
print(dict2)
1.2 字典的查询
与前面的有序序列的区别:字典没有下标,无法通过下标查询。
-
查询单个值
格式:
1)字典名[key]【只能查询字典中存在的键】 2)字典名.get(key)
示例:
#1) dict1 = {'key1':1,'key2':2} print(dict1['key1']) #2)若查询的键不存在,返回值为None dict2 = {'key1':1,'key2':2} print(dict2.get('key1')) print(dict2.get('key3'))
-
查询多个值
格式:
1)字典名.keys() #获得字典中所有的键 2)字典名.values() #获得字典中所有的值 3)字典名.items() #获得字典中所有的键值对【以元组的形式输出】
示例:
dict1 = {'key1':1,'key2':2} print(dict1.keys()) print(dict1.values()) print(dict1.items())
1.3 键值对的增加与修改
格式:
字典名[key] = value
1)key不存在,即为增加
2)key存在,即为修改
示例:
dict1 = {'key1':1,'key2':2}
dict1['key3'] = 3 #增加
dict1['key1'] = 0 #修改
print(dict1)
-
setdefault()方法
格式:
字典名.setdefault(键,值) 1)只能用于增加,不能修改 2)当值没有输入时,默认为None 3)一次只能增加一个键值对
示例:
dict1 = {'key1':1,'key2':2} #1) dict1.setdefault('key3',3) dict1.setdefault('key1',0) print(dict1) #2) dict1.setdefault('key4') print(dict1)
-
update() 方法
格式:
字典名.update({键:值,键:值,...}) 1)既可以增加也可以修改 2)一次可以增加多个键值对
示例:
dict1 = {'key1':1} #1) dict1.update({'key2':2}) #增加 dict1.update({'key1':0}) #修改 print(dict1) #2) dict1.update({'key3':3,'key4':4}) print(dict1)
1.4 键值对的删除
-
del()方法
格式:
del 字典名[key] 【如果不指定键,会将整个字典删除,无法查询到字典】
示例:
dict1 = {'key1':1,'key2':2,'key3':3} del dict1['key2'] print(dict1) del dict1 print(dict1)
-
clear()方法
格式:
字典.clear() #清空字典
-
pop()方法
格式:
字典.pop(key) #键必须要写
-
popitem()方法
格式:
字典名 . popitem() 【随机删除一个键值对(有些版本默认删除最后一个键值对)】
二、集合(set)
本质:存储一些非重复性的数据,对数据进行去重。
2.1 集合的创建
格式:
集合名 = {元素1,元素2,元素3,...}
1)集合是无序的,所以不能查询【无序性】
2)元素重复时,只会存入一个【唯一性】
3)创建空集合需要使用set
4)集合中的元素必须是不可变类型
示例:
#创建集合的两种方法
set1 = {'a','b','c'}
set2 = set({'c','d','e'}) #一般不这么创建
print(set1,'\n',set2)
a = set() #空集合
print(type(a))
b = {} #空字典
print(type(b))
2.2 集合的增删改
-
add()增加
格式:
集合名.add(元素) 1)一次只能增加一个 2)
-
remove()删除
格式:
集合名.remove(元素) 1)一次只能删除一个 2)删除的元素不存在时,会报错
-
discard()删除
格式:
集合名.discard(元素) 1)一次只能删除一个 2)删除的元素不存在时,不会报错
-
clear()清空
格式:
集合名.clear() 【清空后返回set()】
2.3 集合的运算
- 集合间的运算
符号 | 含义 |
---|---|
& | 交集:两个集合的公共元素 |
| | 并集:两个元素的全部元素 |
- | 差集:被减集合独有的元素 |
^ | 对称差集:两个集合中除公共元素外的其他元素(并集 - 交集) |
示例:
a = {1,2,3}
b = {2,3,4}
print(a & b)
print(a | b)
print(a - b)
print(a ^ b)
- 集合对列表的去重
c = [1,2,3,2,3,4]
c = list(set(c))
print(c)