每天 10 分钟学 Python:小白也能轻松上手(五)数据类型-集合、字典

1. 集合

由{ }包裹,无序的不重复的元素组成,分为可变集合和不可变集合

可变集合

可变集合的元素定义好后不可修改,但是集合本身可以增加、删除元素

元素的数据类型只能是数字、字符串、元组

集合名={元素1,元素2。。。}

s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
print(s1)

# 集合自动去重
l1 = [2, 5, 6, 3, 6, 6]
print(list(set(l1)))

可变集合的增加

add( )添加一个元素

update()添加多个元素

s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
s1.add(888)
s1.update({11, 222, "haha"})
print(s1)

可变集合的删除

remove( )删除指定元素,不存在会报错

discard( )删除指定元素,不存在不会报错

pop( )删除第一个元素

s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
s1.remove(3)
s1.discard("hi")
s1.pop()
print(s1)

创建空集合

n = {}
print(type(n)) # <class 'dict'> 直接创建是字典
s2 = set()
print(type(s2))

可变集合的查找

in关键字 查找某元素是否存在

not in

s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
print("hqyj" in s1)

其他函数

len( ) 计算元素个数

set( ) 生成一个集合

copy( ) 拷贝

clear( ) 清空集合元素

intersection( ) 求两个集合的交集

union( )求两个集合的并集

issubset( ) 判断两个集合之间是否是子集关系

issuperset( ) 判断集合中所有元素是否都包含在原始集合中

s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
s2 = {2, 333, 5, 666, "hi"}
s3 = {2, 5}
# 交集
print(s1.intersection(s2))
# 并集
print(s1.union(s2))
# s3是s2的子集
print(s3.issubset(s2))
# s2中是否包含s3的所有元素
print(s2.issuperset(s3))

不可变集合

元素不可变,元素个数也不可变

s1 = frozenset({"hello", "labubu"})
print(s1)
print(type(s1))

2. 字典

序列:字符串、列表、元组、集合、字典

有序序列:字符串、列表、元组

无序序列:集合、字典

由{ }包裹,无序可修改,元素以键值对的形式存在

字典名={键1:值1,键2:值2。。。}

d1 = {"name": "聂廉杰", "sex": "m", "class": 25061}
print(d1)
print(type(d1))

# dict.fromkeys(iterable, value)
# iterable序列,里边存放键
# value值,默认值None
# d2 = dict.fromkeys([1, 2, 3])
d2 = dict.fromkeys([1, 2, 3], 999)
print(d2)
print(type(d2))

键值对特点

键是唯一的,键和值一一对应

键只能是数字、字符串、元组,不能是列表

值可以是任意类型

字典的访问

字典名[键名]

d1 = {"name": "nlj", "sex": "m", "class": 25061, "friend": "zs", "f_class": 25061}
print(d1["class"])

字典的相关函数

键值对的添加:

直接添加

update( )字典合并

d1 ={"name":"nlj","sex":"m","class":25061}
d2 ={"friend":"zs","f_class":25061}
d1["f_gf"]="ls"
print(d1)
d2.update(d1)
print(d2)

键值对的删除

pop

参数:键名

popitem

随机删除,python3.7后,删除最后一个

clear

删除所有元素

del

删除字典

d1 ={"name":"nlj","sex":"m","class":25061}
# d1.pop("sex")
# d1.popitem()
# d1.clear()
# del d1
print(d1)

键值对的修改

直接修改修改单个元素 字典名[键名]=新的值

update( )修改多个

d1 = {"name": "nlj", "sex": "m", "class": 25061}
d1["class"]=61
d1.update({"name": "詹姆斯", "sex": "man"})
print(d1)

键值对的查询

直接键名查询

get( ) 如果键名不存在返回自定义提示语,默认None

in 或 not in 查找键名

setdefault( ) 如果键值对不存在会创建一个键值对

d1 ={"name":"nlj","sex":"m","class":25061}
print(d1.get("nameqwe"))
print(d1.get("name","不存在"))
print(d1.setdefault("name"))
print(d1.setdefault("color", "black"))
print(d1)

其他函数

len

计算键值对的个数

copy

拷贝

keys

返回字典中所有的key值

values

返回字典中所有的value值

items

返回字典中所有键值对

d1 ={"name":"nlj","sex":"m","class":25061}
print(d1.keys())
print(d1.values())
print(d1.items())
print(d1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值