Python之路-基础数据类型之字典 集合

时间:2022-02-02 18:11:18

字典的定义-dict

字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成,字典是无序的,key是不可修改的.dic = {1:'好',2:'美',3:'啊'}

字典的操作

dic[键] = '值'  若键存在,则是修改,不存在则是增加

dic = {1:'好',2:'美',3:'啊'}
dic[4] = '哈哈'   # 4这个key值不存在,所以新增
print(dic)
输出结果:{1: '好', 2: '美', 3: '啊', 4: '哈哈'}
dic[4] = '你笑啥' # 4这个key值存在,所以修改
print(dic)
输出结果:{1: '好', 2: '美', 3: '啊', 4: '你笑啥'}
dic.setdefault(key,value),若只有key,代表查询,若对应有值,返回值,无值时候返回None

dic = {1:'好',2:'美',3:'啊'}
dic.setdefault(4)
print(dic)
返回结果:{1: '好', 2: '美', 3: '啊', 4: None}
dic = {1:'好',2:'美',3:'啊'}
dic.setdefault(4,'hahh')
print(dic)
返回结果:{1: '好', 2: '美', 3: '啊', 4: 'hahh'}
dic.fromkeys('可迭代对象',值)如果值是列表,是可变的那么如果更改列表中的值会影响整个字典键中的值.

dic = {}
lst = ['hello','world']
dic = dic.fromkeys(lst,[1,2,3,4])
print(dic)
dic['hello'].append(5)
print(dic)
输出结果:  #列表是可变的,所以在输出的结果中都发生了变化
{'hello': [1, 2, 3, 4], 'world': [1, 2, 3, 4]}
{'hello': [1, 2, 3, 4, 5], 'world': [1, 2, 3, 4, 5]}
dic = {}
lst = ['hello','world']
dic = dic.fromkeys(lst,'he')
print(dic)
dic['hello'] = dic['hello'] + 'l'
print(dic)
输出结果:
{'hello': 'he', 'world': 'he'}
{'hello': 'hel', 'world': 'he'}

del dic 删除整个列表
del dic[key] 根据key值删除
dic.pop(key,"不存在是可显示提示语")

dic = {1:'好',2:'美',3:'啊'}
print(dic.pop(2))# 可返回删除的值
print(dic.pop(5,"找不到呀"))#找不到时会报错,可在括弧第二个区域输入提示语句
popitem():没有参数,返回值是被删除的键值对,Python3.6以上版本删除最后一项键值对,其它版本是随机删除一组键值对.
dic.clear() 清除,跟列表用法一样

dic[key] = 新值 key存在的情况下就是改
dic.update()

dic = {1:'好',2:'美',3:'啊'}
dic1 = {1:'不好',5:'哈哈'}
dic.update(dic1)#根据括弧里面的修改,若有就改,没有就新增
print(dic)
运行结果:{1: '不好', 2: '美', 3: '啊', 5: '哈哈'}

print(dic[key]) 通过键来查
dic.setdefault 当key值存在时就是查
dic.get(key,'返回不存在的提示语')

dic = {1:'好',2:'美',3:'啊'}
print(dic.get(3))
print(dic.get(5,'没有啊'))# 若不存在则返回None,可添加提示语
运行结果:
啊
没有啊

字典的其他操作

dic.keys()
dic.items()
dic.items()

dic = {1:'好',2:'美',3:'啊'}
print(dic.keys())          #高仿列表 结果是元组
print(dic.values())        #高仿列表 结果是元组
print(dic.items())         #元组形式
不能使用下标
输出结果:
dict_keys([1, 2, 3])
dict_values(['好', '美', '啊'])
dict_items([(1, '好'), (2, '美'), (3, '啊')])

字典的嵌套

不再详述

集合的定义-set

set集合是python的⼀个基本数据类型. ⼀般不是很常⽤. set中的元素是不重复的.⽆序的.⾥ ⾯的元素必须是可hash的(int, str, tuple,bool), 我们可以这样来记. set就是dict类型的数据但 是不保存value, 只保存key. set也⽤{}表⽰
注意:注意: set集合中的元素必须是可hash的, 但是set本⾝是不可hash得.set是可变的.
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典的,还有set集合的值必须是不可变的
例如: se = set()
如:整型,字符串,元祖.不能是列表,字典等可被修改的数据

集合的操作

se.add(值)

se = {0,1,2,'h','lol',(1,2)}
se.add(3)
print(se)
运行结果:{0, 1, 2, (1, 2), 3, 'lol', 'h'}
se.update('可迭代对象') 迭代更新

se = {1,2,'ha','lal',4}
msg = '你好啊'
se.update(msg)#迭代更新,跟dic.fromlkeys()有点像
print(se)
运行结果:{1, 2, '你', 4, '好', '啊', 'lal', 'ha'}

del se 删除整个列表
se.pop() 随机删除

se = {1,2,'ha','lal',0,4}
se.pop()
print(se)
运行结果:{1, 2, 4, 'lal', 'ha'}
se.remove(元素)

se = {1,2,'ha','lal',0,4}
se.remove(1)
print(se)
运行结果:{0, 2, 4, 'ha', 'lal'}

集合的其他操作

交集

两个集合里面都存在的数据,可以使用&或者使用函数intersection来获取两个集合的交集.

se = {1,2,'ha','lal',0,4}
se1 =  {1,3,'ha','lal',0,4}
print(se & se1)
print(se.intersection(se1))

并集

将两个集合进行合并,如果两个元素相同合并一个城元素,如果两个元素不相同就添加进来.使用|符号或者使用union()函数

se = {1,2,'ha','lal',0,4}
se1 =  {1,3,'ha','lal',0,4}
print(se | se1)
print(se.union(se1))

差集

用第一个集合减去第二个集合里共同存在的元素.使用符号-或者使用函数difference()来实现

se = {1,2,'ha','lal',0,4}
se1 =  {1,3,'ha','lal',0,4}
print(se - se1)
print(se.difference(se1))
输出结果:{2}

反交集

将两个集合进行合并,并去除相同的元素,使用符号^或者symmetric_difference

se = {1,2,'ha','lal',0,4}
se1 =  {1,3,'ha','lal',0,4}
print(se ^ se1)
print(se.symmetric_difference(se1))
运行结果:{2, 3}

子集

一个集合是否在另一个集合中,也就是一个集合是否被另一个集合所包含.如果被另一个集合包含返回True,否则返回False.使用<符号或者issubset()

se = {1,2,'ha','lal',0,4}
se1 =  {1,3,'ha','lal',0,4}
print(se < se1)
print(se.issubset(se1))
运行结果:False

超级

与子集相反,判断一个集合是否包含另一个集合,如果包含另一个集合返回True否则返回False.使用符号>或者issuperset()

se = {1,2,'ha','lal',0,4}
se1 =  {1,3,'ha','lal',0,4}
print(se > se1)
print(se.issuperset(se1))
运行结果:False

forzenset(可迭代对象)

返回一个冻结的集合.被冻结的集合不能进行修改,删除,添加等操作.如果不写参数,则返回一个冻结的空的集合.参数是可迭代对象所以可以是列表,字典等

se = {1,2,'ha','lal',0,4}
lst = [1,2,3,4]
dic = {1:'hao',2:'buhao'}
se1 = frozenset(se)
lst1 = frozenset(lst)
dic1 = frozenset(dic)
print(se1)
print(lst1)
print(dic1)
运行结果:
frozenset({0, 1, 2, 'ha', 4, 'lal'})
frozenset({1, 2, 3, 4})
frozenset({1, 2})