字典的定义-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})