字典和集合

集合

集合(set):集合是无序的、不重复的数据集合,它本身是可变的,但里面的元素是不可变类型(这里要注意,即使是含有列表的元组也不可以,必须是完全不可变类型)

1.集合的创建

# 1.集合的创建
s = {1, 2, 3, 1, 2, 3}
print(s, type(s))
# 注意点: 集合的元素必须是不可变数据类型
s = {}
print(s, type(s))
# 注意点2: 空集合不能使用{},而要使用set{}
s = set()
print(s, type(s))

在这里插入图片描述

2.集合的特征

# 2.集合的特征
# 不支持 +  *  index  slice  (因为集合无序不重复的)
# 支持成员操作符in  not in
print(1 in {1, 2})

在这里插入图片描述

3.集合的常用操作

集合增加元素
# 3. 集合的常用操作
# 3-1) 增加
#           add:     添加单个元素
#           update:  添加多个元素
s = {1, 2, 3}
s.add(100)
print(s)
s = {1, 2, 3}
s.update({4, 5, 6})
print(s)

在这里插入图片描述

集合删除元素
# 3-1) 删除
#       remove: 如果元素存在,删除,否则报错
#       discard: 如果元素存在,删除,否则do nothing
#       pop:随机的删除元素,集合为空,否则报错
#       clear :删除结合中的所有元素
s = set()
s.clear()
print(s)
s = {1, 2, 3}
s.clear()
print(s)
s = {1, 2, 3}
s.remove(1)
print(s)
s.discard(100)
print(s)
s = {1, 2, 3}
s.pop()
print(s)

在这里插入图片描述

集合的查看
# 3-3).查看
#          并集: s1 - s2
#           交集: s1 & s2
#           对称差分:s1 ^ s2   并集 - 交集
#           并集: s1 | s2
#           子集:s1.issubset(s2) s2是s1的子集吗?
#           s1.isdisjoint(s2) s1和s2没有交集吗?
s1 = {1, 2, 3}
s2 = {1, 2}

print(s1 - s2)
print(s1 & s2)
s1 = {1, 2, 3}
s2 = {1, 2, 4}
print(s1 ^ s2)
print(s1 | s2)
print(s1.issubset(s2))
print(s1.isdisjoint(s2))

在这里插入图片描述

拓展
#  4.拓展: frozenset不可变的集合
s = frozenset({1, 2, 3})
print(s,type(s))

在这里插入图片描述

字典

1.字典的创建

# 1.字典的创建dict
# key-value 对或者键值对
d = {"name":"westos","age": 18, "city":"西安" }
print(d, type(d))

在这里插入图片描述

2.字典的特性

# 2.字典的特征
# 不支持 +  *  index  slice  (因为集合无序不重复的)
# 支持成员操作符in  not in
d = {"name":"westos","age": 18, "city":"西安" }
print('name' in d)    #True  判断是否为所有的key值成员
print('westos' in d)  #False

在这里插入图片描述

3.字典的常用方法

查看

查看所有: keys, values, items
查看局部: d[key], d.get[key], d.get(key, default-value)

# 3.字典的常用方法
# 3.1 查看
d = {"name":"westos","age": 18, "city":"西安" }
print(d.keys())      #查看字典所有的key值
print(d.values())    #查看字典所有的value值
print(d.items())     #查看字典所有的key和value值
print(d["name"])     #查看key为name对应的value值 ,key对应的value不存在时报错
print(d.get('province')) #查看key为name对应的value值,如果不存在返回none.
print(d.get('province', "陕西")) # 查看key为name对应的value值,如果不存在返回默认值

在这里插入图片描述

增加和修改
# 3.2增加和修改
d = {"name":"westos","age": 18}
d['city'] = '西安'   #key不存在就添加
print(d)
d['city'] = '北京'   #key存在就修改value值
print(d)
d = {"name":"westos","age": 18}
d.setdefault('city',"西安")    #key不存在就添加
print(d)
d.setdefault('city',"北京")    #key存在就do nothing
print(d)

在这里插入图片描述

删除
# 3.3 删除
d = {"name":"westos","age": 18}
d.pop('name')
print(d)
d = {"name":"westos","age": 18}
del d['age']
print(d)

在这里插入图片描述

便利字典

# 4 .便利字典
d = {"name":"westos","age": 18, "city":"西安" }
#默认情况下,字典只会遍历key值
for item in d:
    print(item)

for item in d.items():
    print(item)
for key,value in d.items():
    print(f"key={key} ,value={value}")

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不愿相思白了头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值