文章目录
创作不易 要是写得可以留个赞再走吧
1. 元组类型
1.1 元组的介绍
类型:tuple
特性:与字符串同为不可变序列数据类型
一般当我们希望数据不改变时,我们使用元组,其他情况下基本都用列表)
1.2 基本使用
1.2.1 创建:()或tuple()
如果元组不为空元组时,则至少要有一个逗号(,) 当元组不为空时,括号可以省略, 当你只做了一个变量的赋值的时候,元组的括号可以省略
注意:
tuple1 = (1, 2, "xwh")
tuple2 = ()
tuple3 = (1)
tuple4 = (1,) #如果元组不为空元组时,则至少要有一个逗号(,)
print(type(tuple2),type(tuple3))
# 拆包
tuple5 = 1, 2, 3, True # 当你只做了一个变量的赋值的时候,元组的括号可以省略
tuple6 = 1,
print(type(tuple5),type(tuple6))
tuple7 = (1, 2, 3, 4)
a, *b, c = tuple7 # *号表示匹配所有,注意,不能同时存在两个或两个以上的*
print(a)
print(b)
print(c)
>>>1
[2, 3]
4
# 数据获取
print(tuple7[1:3])
print(tuple7) # 元组类型 为 不可变数据类型 只可以获取数据和切片,不改变数据整体结构
结果
<class 'tuple'> <class 'int'> <class 'tuple'> <class 'tuple'> <class 'tuple'>
(1, 2, 3, 4)
1.2.2 解包:元组解包指元组当中的每一个元素都赋值给一个变量
列:
a, b, c = tuple1
print(a, b, c)
1 2 xwh
1.3 操作
元组继承序列所有的通用操作
参考通用操作
因为元组创建后不可修改,所以无特殊操作
2.字典类型
2.1 字典基本介绍
- 字典属于一种新的数据结构称为映射(mapping)
是映射的体现 ,是映射的一种衍生形式 - 字典的作用和列表类似,都是用来存储对象的容器
- 列表存储数据的性能好,但是查询数据的性能差,字典正好与之相反
- 在字典中每一个值都有唯一的名字,通过这个唯一的名字可以找到指定的元素(键的重新赋值,后者覆盖先者)
- 字典的键是不能重复的,如果出现重复的后面的会替换前面的
- 字典我们也称之为键值对(key-value)结构
- 每一个键值对我们称其为一项(item)
- 字典的值可以是任意对象 字典的键可以是任意的不可变对象(int str bool tuple…)
2.2 映射
映射:是一种键(索引)和值(数据)的对应关系,表达了一种属性(键)与它的值的对应关系
2.3 dict
- 创建
# 法一:
直接创建:
dict1 = {“name”:“wh”,“sex”:“女”,“星座”:“金牛”}
print(dict1)
# 法二
dict()赋值创建
dict2 = dict(name =“wh”,sex =“女”,星座 =“金牛”)
# 法三
dict3 = dict([('name', 'wh'), ('age', 18)])
print(dict3)
双值子序列都可以使用这种方式来创建字典 [(1, 2), (3, 4)]
双值序列[1, 2] ‘ab’(1, 2)
子序列 [(1, 2)]
字典特性:当有相同的key名称时,后面的键值对会把前面的覆盖掉
- 直接获取value
dict1 = {“name”:“wh”,“sex”:“女”,“星座”:“金牛”}
print (dict1["name"])
- get
dict.get() 当使用get查询不存在的key的时候,不会报错,会返回一个None# print(dict1.get('sex'))# print(dict1['sex']) # 这种方式不存在key会直接报错
- 增加
dict.setdefault(key, value) 向字典中添加key-value , 如果这个key存在,则不会做任何改变,如果不存在,直接添加进去
- update # 以字典类型增加
update() 将其他字典的key-value添加到当前的字典当中
- 删除
- del删除,以key 索引 del 删除字典中的key-value
- pop删除 pop(key[,default]) 根据key删除自定中的value。第二个参数可以指定一个默认值,当获取不到值的时候,返回这个值
- popitem popitem()
删除字典最后的一个key-value 这个方法是有返回值的。删除之后它会将删除的key-value作为返回值返回
- copy() 方法用来对字典进行潜复制
注意:潜复制只会复制字典本身,如果字典中还有个字典是不会进行复制的
列表的操作
# -*- coding: utf-8 -*-
# @Time : 2021/3/15 21:32
# @Author : B612
# @File : 字典.py
# 1.创建
dict1 = {
"name": "liHua",
"sex": "男",
1: "哈哈"
}
print(type(dict1))
# 2. 查询
print(dict1["name"])
# 3. 基本操作
print(len(dict1))
print('name' in dict1)
print('liHua' in dict1) # key相当于索引, 不能用value来判断 item 是否在字典中
# 4.获取
# dict.get() 当使用get查询不存在的key的时候,不会报错,会返回一个None
print(dict1.get(1))
print(dict1.get("1")) # None
# 5.修改
dict1['name'] = 'xy'
print(dict1)
# dict1['name'] = xy
# print(dict1)
# 运行结果
# None
# NameError: name 'xy' is not defined
# 6.删除(3)
# dict.pop(key[,default]) 根据key删除特定中的value。第二个参数可以指定一个默认值,当获取不到值的时候会返回默认值
res = dict1.pop('2', '当前数据不存在')
print(res)
print(dict1)
# dict.popitem() 删除字典最后的一个key-value这个方法是有返回值的。删除之后它会将删除的key - value作为返回值返回(元组类型)
res = dict1.popitem()
print(res)
print(dict1)
# del 删除字典中的key-value,以索引形式提取
del dict1["name"]
print(dict1)
# 7. 增加
# update() 将其他字典的key-value添加到当前的字典当中
dict2 = {"地址":"江西"}
dict1.update(dict2)
print(dict1)
# dict.setdefault(key, value) 向字典中添加key-value , 如果这个可以存在,则不会做任何改变,如果不存在,直接添加进去
dict1.setdefault('boyfriend', '应志平')
print(dict1)
# dict.clear() 清空
运行结果
D:\python3.6.5\python.exe D:/pycharm2019/Newproject/字典.py
<class 'dict'>
liHua
3
True
False
哈哈
None
{'name': 'xy', 'sex': '男', 1: '哈哈'}
当前数据不存在
{'name': 'xy', 'sex': '男', 1: '哈哈'}
(1, '哈哈')
{'name': 'xy', 'sex': '男'}
{'sex': '男'}
{'sex': '男', '地址': '江西'}
{'sex': '男', '地址': '江西', 'boyfriend': '应志平'}
Process finished with exit code 0
2.4 遍历列表
我们主要可以通过3种方式对字典进行遍历
• keys() 该方法返回字典所有的key• values() 该方法返回一个序列 序列中保存有字典的值
• items() 该方法会返回字典中所有的项 它返回一个序列,序列中包含有双值子序列 双值分别是 字典中的key和value
练习
# @Time : 2021/3/17 17:04
# @Author : B612
# @File : 第七讲作业.py
# 第一题
dict1 = {"name": "123", "date": {"result": [{"src": "python1"}, {"src": "python2"}, {"src": "python3"}]}}
dict2 = dict1["date"]
ls = dict2["result"]
for i in range(3):
print(ls[i].get("src"), end='\t')
# 第二题
# 有如下值列表[11,22,33,44,55,66,77,88,99,90] 将大于等于66的值保存至字典的第个key的值中,将小于66值保存至第二个key的值中。
ls = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
dict3 = {}
a = []
b = []
for i in ls:
if i >= 66:
a.append(int(i))
else:
b.append(int(i))
dict3.setdefault(1, a)
dict3.setdefault(2, b)
print(dict3)
运行
D:\python3.6.5\python.exe D:/pycharm2019/Newproject/第七讲作业.py
python1 python2 python3 {1: [66, 77, 88, 99, 90], 2: [11, 22, 33, 44, 55]}
Process finished with exit code 0