python 第五课 集合、字典

本文介绍了Python编程语言中的集合和字典数据类型。集合是一种无序且不允许重复元素的数据结构,通过花括号创建,支持交集、并集和差集运算。字典则由键值对组成,允许动态修改,提供了添加、删除和查找功能。文中还展示了各种操作示例,如添加元素、删除元素、修改键值对等。
摘要由CSDN通过智能技术生成
'''
集合 set
    特性,在集合内重复的值 ,它会自动去重,只留下不同的值
    集合的创建 :由花括号{}包裹,值与值之间逗号隔开

'''
li1 = [1, 2, 5,3,5,4,6] #列表
st1 = {1, 2, 3, 4, 5, 6,6,4,7,2,5,1,6} #集合

print(type(li1))
print(type(st1))
print(li1)
print(st1)
print(set(li1))
print('-------------------------------')
li2 = [2,5,1,2,5,65,8,6,7]
print(set(li2))

n_st = set(li2)
print(n_st)  #集合特性:去重只能去重比较微小的一些数值 ,会进行默认排序

#集合是散列类型之一,所以里面的数据 无序,当集合中数据类型有多种时,每一次运行集合时里面的逻辑都会改变

st2 = {5,8,6,9,'AA','%$',2,5}  #集合中出现不同类型的元素时,排序逻辑每次都会改变
print(st2)

'''
集合的运算
交集  两个集合内相同 的元素 符号为: (&)
并集  丙从此集合内所有的元素合并在一起  符号为(|) 竖杠
差集   两个保合中相同的元素都被去除只剩下两个集合中不相同的元素  符号为减号  -
      注意:两个集合相减,只剩下两集合中前一个不相同的元素
'''
print('----------------------------------------')
set1 = {1,2,3,9,'q'}
set2 = {1,2,'A'}
print(set1 & set2) #输出为两个集合中相同 的元素,重叠部分保留不输出

print('并集','并集','并集','并集','并集')
print(set1 | set2)   #输出两个集合中所有的不相同的元素

print('差集差集差集差集差集')
print(set1 - set2)

'''
集合中的增删改查
因为集合是无序的,所以查询不到里面的内容,同时也无法修改
所以集合中只有【增加和删除】的功能
add() 增加一个元素
update() 更新  可以增加多个元素
pop()  随机删除 (列表 中学习过)
remove() 移除   (列表中学习过)可以删除指定的元素

'''

# add()在存在的集合内添加一个元素
s1 =  {1,2,3,4}
s1.add('A')  #add 只能添加一个元素
print(s1)
#update ({值1, 值2, 值3})  添加多个元素
print('update-----------------------')
s1.update({'A',2, 8})
print(s1)

#pop() 在集合中为随机删除一个元素(因为集合中的元素是无序的)
print('pop---------------------------')
s2 = {1,5,8,7,9}

s2.pop()
s2.pop()
print(s2)

print('remove------------------------------')
s2.remove(9)  #只能删除一个指定的内容9
print(s2)


print('字典---------------------------------')


'''
创建列表,示范索引取值 
'''

li3 = ['张三', '李四', '王五']
#获取李四这一个值 ,需要使用索引获取
print(li3[1])

'''
字典 dict 
创建方法:以花括号包裹,其中字典的每一个元素都是由键值 对组成
'''

#
di = { '1' :'张三', '2':'王五', '3':'李四' } #前面 的学号为键,后面名字即为值
print(type(di))
print(di)
#第二种方法
# 对于字典的第二种创建方式 :对于键的命名规范有要求:
#键必须 是字母 或者下划线开头后面可以跟任意字母字符及下划线

di2 = dict(a = 1, b = 2)
print(type(di2))
print(di2)

print('空字典------------------------------------')
#关于创建空集合和空字典的区别
date =  {}  #创建空字典
print(type(date))
print(date)

data1 = set() #创建空集合
print(type(data1))  #查看数据类型
print(data1)


data1.add('1')
print(data1)

#创建字典的第三种方法
print('创建字典的第三种方法---------------------------')

li4 = {'A':'2', 'b':'3', 'D':'6'}
print(type(li4))
di3 = dict(li4)
print(di3)

#字典中的get 方法 ,与普通 获取的内容一样,只是对于获取不存在的键 时,不会报错,而是输出None(无)
print(di3.get('A'))
print('字典测试 -------------------------------------')
print(di3.get('D'))
print(di3.get('7'))  #输出结果为None 意思就是没有这个值



'''
字典不同于元组,字典的值是可以变的,所以字典也是可以进行增删改查

'''
di5 = {'A':'2', 'b':'3', 'D':'6'}
"""
修改与增加,可以通过键 获取位置从而修改值 的内容 
形式: 字典名【键】 = 值
"""

#把di5中的A改成a
di5['A'] = 'a'
print(di5)

#增加
#格式如下
di5[5] = '99'
print(di5)

'''
对于字典内置方法的修改和添加 
setdafault update
'''
#setdafault 字面意思为设置默认值,如果里面输入了存在的键,则会将它打印输出为对应的值
print('*********************************************************')
di6 = {'A':'2', 'b':'3', 'D':'6'}
print(di6.setdefault('A','D'))
print(di6)

print('-------------------------------------------------------------')

#update,字面意思和用法一样,意为:修改更新
di6.update({'A':'小倪'})
print(di6)

"""
删除 
pop
popitem  删除最后一对键值对
del 
remove
"""
di6.pop('A')  #删除指定健的值
print(di6)

#使用popitem 方法随机删除一对键值对(python3.6 后版 本删除最后一个)

di6.popitem() #删除最后一对键值对,本质是随机删除,但是在PHTHONE3.6版本之
print(di6)
#使用DEL
di7 = {'A':'2', 'b':'3', 'D':'6',1:'9'}
del di7[1]
del di7['A']
print(di7)

'''
获取字典视图:视图可以理解


'''
print('###########################################')
di9 = {'A':'2', 'b':'3', 'D':'6',1:'9'}
print(di9.keys())  #获取字典中的所有键值对的键
print(di9.values()) #获取字典中所有键值 对的值
print(di9.items())

#
li_keys = list(di9.keys())
print(li_keys)  #打出所有的键
print(type(li_keys)) #查看类型
print('##################################################')
li_values = str(di9.values()) #将获取的值 转变成字符串类型
print(li_values)  #通常对于获取的值 会是会转变为列表类型(list)
print(type(li_values))

lis = list(di9.items())  #获取内所有元素的健 值
print(lis)

print(type(lis))

print('=================================================')

for k in di9.keys():
    print(k)

for v in di9.values():
    print(v)

    for k,v in di9.items():
        print(f'键为{k},值为{v}')

        print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')

#作业:
'''
1,找出两个列表中相同的元素,并打印出来
2,判断用户输入的是不是一个手机号码
要求:以1开头
    长度为11位len()
    纯数字
'''

liA = [5,8,9,6,3,4,'i']
liB = ['A',5,9,'C']

print(type(liA))
liA = set
print(type(liA))
print(liA & liB)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值