Python 第七课:元组,字典及集合

1. 元组

  1. 元组是一个不可变序列(tuple)
  2. 符号为()
    ()是可以省略的,但当创建元组有其他元素时,必须要有==‘,’==
  3. tuple1=()空元组
  4. 元组也可以存放一切
    tuple1 = (1, None, False, [])

1.1 元组的拆包

这里以实例来说明:

# 拆包
tuple1 = (1, 2, 3)
a, b, c = tuple1
print(a, b, c)

运算得出:
在这里插入图片描述

# 特例
tuple1 = (1, 2, 3, 4)
a, b, c = tuple1
print(a, b, c)

在这里插入图片描述
这里会报错,因为元组tuple1中有太多值需要被拆包。

对于这个问题,引入‘*——通配符’概念

’ * ’ 是通配符表示符号,可以代表所有,另外将转化为列表形式。

# 通配符使用举例
tuple1 = (1, 2, 3, 4)
a, b, *c = tuple1
print(a, b, c)

运行得出
在这里插入图片描述
补充说明

字符串以及列表的拆包,类似元组拆包。

2. 字典

  1. 数据结构为映射-mapping,即查询。
  2. 映射——一一对应的关系。
  3. 表示形式Key-Value, 称为一个键值对,又或者称为一项。
  4. 字典类型dict
  5. 表示符号{}
  6. dict1 = {}是一个空字典。
  7. 字典无索引
# 举例
# 正常使用
dict1 = {'name': 'David', 'Skill': 'Python', 'Age': '27', 'Gender': 'Male'}
# dict()
dict2 = dict(name='David', Skill='Python', Age='27', Gender='Male')
# 双值序列
dict3 = dict([('name', 'David'), ('Skill', 'Python'), ('Age', '27'), ('Gender', 'Male')])
print('\n', dict1, '\n', dict2, '\n', dict3)

运行得到
在这里插入图片描述

2.1 字典的增删改查

命令含义
len()长度显示
dict.get()取值
dict[]取值
dict[]=替换
dict.update()字典添加
del dict[]指定删除
dict.popitem()默认删除最后一项
dict.pop()指定删除

举例即注意事项

dict1 = {'name': 'David', 'Skill': 'Python', 'Age': '27', 'Gender': 'Male'}
print(len(dict1)) # 长度显示,按项统计
print(dict1.get('name'),dict1['name']) # 两种根据Key取值方法
print(dict1.get('sex')) # 不报错,显示没有sex项
# print(dict1['sex']) # 报错,因为字典中无sex项
# 字典修改(替换,添加)
dict1['Age'] = 18 # 有当前Key,进行替换
dict1['Hobby'] = 'hiking' # 无当前Key,添加新项
print(dict1)
dict2 = {'1' : 1, '2' : 2, '3' : 3}
dict1.update(dict2) # 其他字典添加
print(dict1)
del dict1['Age'] # 指定Key删除
dict1.popitem() # 默认删除最后一项
print(dict1)
print(dict1.pop('name')) # 指定删除,有Key时,返回对应Value
print(dict1.pop('4', 4)) # 指定删除,无Key时,返回指定Value 4

运行得出
在这里插入图片描述

2.2 深拷贝以及浅拷贝

  1. copy.copy()浅拷贝——不拷贝第二层数据——即嵌套在内的数据类型
import copy
dict1 = {'name':123, 'date':[1, 2, 3]}
dict2 = copy.copy(dict1)
  1. copy.deepcopy()深拷贝——将所有数据进行复制

总结:

  1. 浅拷贝只是创建表层数据,因此在内数据id相同;而深拷贝是全部重新创建,内在id也发生了改变。
  2. 不可变数据类型——value变,id变;value不变,id不变。
    可变数据类型——id一直不一样。

2.3 遍历字典

  1. Key遍历表达式:keys()
    语句:for k in dict.keys():
  2. Value遍历表达式:values()
    语句:for v in dict.values():
  3. 项遍历表达式:items()
    语句:for k,v in dict.items():

3 集合

总体特点和列表相似,因此这个内容注重不同点的对比

  1. 只能存储不可变数据对象
  2. 存储对象为无序的——不支持索引
  3. 不能出现重复内容——去重
  4. 集合类型:set
  5. 符号:{}
  6. 空集合建立:set1 = set()

3.1 集合使用

命令含义
in是否包含在集合内
not in是否不包含在集合内
set.add()添加元素
set.update()添加新的集合
set.pop()默认从删除第一个数据
set.remove()指定元素删除
set.clear()清空集合

3.2 集合运算

符号含义
&交集
|并集
-差集
^亦或集
<=是否为子集
<是否为真子集
>=是否为超集
>是否为真超集

课后练习

在这里插入图片描述

# Q1
a = {'name':'123', 'data':{'result':[{'src':'python1'}, {'src':'python2'},{'src':'python3'}]}}
b = a.get('data')
print(b)
c = b.get('result')
print(c)
print(c[0].get('src'), c[1].get('src'), c[2].get('src'))

# Q2
a = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
Key1 = []
Key2 = []
for b in a:
    if b > 66:
        Key1.append(b)
    elif b < 66:
        Key2.append(b)
    else:
        continue
set1 = {'大于66':Key1, '小于66':Key2}
print(set1)

得出:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木萝卜pxz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值