集合与字典
一、创建集合
- 创建集合使用{}或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', '男')
浙公网安备 33010602011771号