散列类型

1. 散列类型
"""

集合  set  符号: {} (为空则是字典)  转换方式: set() 可变类型

字典  dict  符号: {} (键值对) 表现形式: {"key": "value"} 转换方式: set() 可变类型

"""
2. 集合
1. 集合的定义
"""
集合的三大特性


无序性  集合里的各个元素是不需要区分顺序的,不能以索引取值

互异性  一个给定的集合里的元素是互不相同的,集合中不会有重复的元素,可用于去重

确定性  给定的集合,它的元素必须是确定的,元素不能是可变类型

"""

# 赋值
num = [1, 1, 2, 3, 3, 9, 4, 5, 66, 7, 7, 9]

# 去重 先转换为集合,利用集合特性去重,再转换为列表
num_1 = list(set(num))

# 打印
# {1, 2, 3, 4, 5, 66, 7, 9}
print(num_1)
2. 集合的三种运算
"""

交集  s1 & s2

并集  s1 | s2

差集  s1 - s2

"""

# 赋值
s_1 = {1, 2, 3, 4, 5, 6}
s_2 = {4, 5, 6, 7, 8, 9}


# 交集

# 打印相交的部分
# {4, 5, 6}
print(s_1 & s_2)


# 并集

# 打印相交的部分
# {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(s_1 | s_2)


# 赋值
s_3 = {1, 2, 3, 4, 5, 6}
s_4 = {4, 5, 6}


# 差集

# 打印相交的部分
# {1, 2, 3}
print(s_1 - s_2)
集合的方法

1. 增

# add 将元素添加到集合中
# 集合内只能添加不可变类型


# 赋值
s_1 = {1, 2, 3, 4, 5}

# 添加数据
s_1.add("hello")

# 打印
# {1, 2, 3, 4, 5, 'hello'}
print(s_1)

2. 删


# pop 删除并返回任意set元素

# 赋值
s_1 = {1, 2, 3, 4, 5}

# 打印
# 1
print(s_1.pop())
# {2, 3, 4, 5}
print(s_1)


# 赋值
s_2 = {1, 2, 3, "hello",  4, 5, 6}

# remove 删除指定的元素
s_2.remove("hello")

# 打印
# {1, 2, 3, 4, 5, 6}
print(s_2)

3. 改

# update 用本身和其它元素的并集更新集合
# 相当于是添加,只能添加可迭代对象

# 赋值
s_1 = {1, 2, 3, 4, 5}

# 更新集合
s_1.update({7, 8, 9, 0})

# 打印
# {0, 1, 2, 3, 4, 5, 7, 8, 9}
print(s_1)

4. 查

# isdisjoint 判断两个集合的交点是否为空

# 赋值
s_1 = {1, 2, 3, 4, 5}
s_2 = {7, 8, 9, 0}

# 打印判断结果
# True
print(s_1.isdisjoint(s_2))


# 赋值
s_3 = {1, 2, 3, 4, 5}
s_4 = {1, 2, 3}

# issubset 子类集合 判断另一个集合是否包含该集合

# 判断s_3是s_4的子集集合
# False
print(s_3.issubset(s_4))


# issuperset 父类集合 判断另一个集合是否包含该集合

# 判断s_3是s_4的父集集合
# True
print(s_3.issuperset(s_4))
3. 字典
字典
"""

字典key值有唯一性 key值不能为可变类型

字典也是无序性

"""

# 赋值
num = {"name": "qi", "age": "20", "sex": "man"}

# 取值
# qi
print(num["name"])

# 查看类型
# <class 'dict'>
print(type(num))
字典的方法

1. 增

# 赋值 {"key": "value"}
num = {"name": "qi"}

# 打印原字典
# {'name': 'qi'}
print(num)


# setdefault  有则查key值所对应的value值,无则增

# 有则查

# 添加数据
num_1 = num.setdefault("name")

# 打印
# qi
print(num_1)


# 无则增


# 方法一
# 只添加key值 value值为None

# 添加数据
num_2 = num.setdefault("age")

# 打印
# None
print(num_2)

# 打印
# {'name': 'qi', 'age': None}
print(num)

# 方法二
# 添加字典 添加key值及key值所对应的value值

# 添加数据
num_3 = num.setdefault("sex", "man")

# 打印
# man
print(num_3)

# 打印
# {'name': 'qi', 'age': None, 'sex': 'man'}
print(num)

2. 删

# 赋值
num = {'name': 'qi', 'age': 18, 'sex': 'man'}


# pop 查出指定key的键值对


# 删除key值及key值所对应的value值 用完再删
# 18
print(num.pop("age"))

# 打印
# {'name': 'qi', 'sex': 'man'}
print(num)


# 赋值
num_2 = {'name': 'qi', 'age': 18, 'sex': 'man', "job": "python工程师"}


# popitem 返回并删除字典中的最后一对键值对


# 删除key值及key值所对应的value值 用完再删
# ('job', 'python工程师')
print(num_2.popitem())

# 打印
# {'name': 'qi', 'age': 18, 'sex': 'man'}
print(num_2)


# clear 清空

# 赋值
num_3 = {'name': 'qi', 'age': 18, 'sex': 'man'}

# 清空数据
num_3.clear()

# 打印
# {}
print(num_3)

3. 改

# 赋值
num = {'name': 'qi', 'age': None}


# update 有则改,无则增


# 有则改

# 改动数据
num.update({"age": 18})

# 打印
# {'name': 'qi', 'age': 18}
print(num)


# 无则增

# 增加数据
num.update({"sex": "man"})

# 打印
# {'name': 'qi', 'age': 18, 'sex': 'man'}
print(num)

4. 查

# 赋值
num = {"name": "qi", "age": "20", "sex": "man"}


# get  获取指定key对应的value值,key不存在则返回None

# 打印
# qi
print(num.get("name"))


# keys  取出所有的key

# 打印
# dict_keys(['name', 'age', 'sex'])
print(num.keys())

# 转换为列表
# ['name', 'age', 'sex']
print(list(num.keys()))


# values  取出所有的value

# 打印
# dict_values(['qi', '20', 'man'])
print(num.values())

# 转换为列表
# ['name', 'age', 'sex']
print(list(num.keys()))


# items  取出所有的键对值

# 打印
# dict_items([('name', 'qi'), ('age', '20'), ('sex', 'man')])
print(num.items())

# 转换为列表
# [('name', 'qi'), ('age', '20'), ('sex', 'man')]
print(list(num.items()))

字典索引key与字典get方法的区别

# 赋值
num = {"name": "qi", "age": "20", "sex": "man"}


# get取值  key不存在则返回None (推荐使用)

# 打印
# qi
print(num.get("job"))


# 索引取值  key不存在则报错 (不推荐使用)

# 打印
# KeyError: 'job'
print(num["job"])
字典推导式
"""

字典推导式

{执行语句 条件语句}

"""


# 赋值
qi = {"name": "xiaoqi", "age": 18}

# 字典推导式
# {条件 + 循环}

# 交换key与value的位置
num = {j: i for i, j in qi.items()}

# 打印结果
# {'xiaoqi': 'name', 18: 'age'}
print(num)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值