字典、集合
dict
字典,在python语言中叫字典,在其他语言中叫键值对数据,关键字是dict,dic = {'键':'值'},可用来存储数据,在数据查找中,字典的查找更快一些;字典是可变的数据类型
***
========================================
可变数据:list,dict,set
不可变数据:int,str,bool值,tuple,元祖
========================================
***
*****unhashable 不可哈希的,就是可变的数据;可变的数据不能哈希;
不可变的数据能哈希
键: 必须是不可变数据类型; 而且不能重复,重复的话就会把值覆盖;
值: 可以随意;
通过键去查找值
字典的增删改查:
增:
dic[键] = '值' (没有的时候叫增)
dic.setdefault(键,'')***
先在字典中通过键去查有没有值,没有就是None
如果有值,就不进行添加
如果是None,就添加值
(ps:字典和字典不能加,字典本身是无序的,但Python3.6版本以上字典默认有序,怎么写就怎么打印)
删: (字典中没有remove)
del dic 删除整个字典
del.[键] 通过键删除
dic.pop( ) 指定键删除,有返回值,返回的是被删除的值
dic.clear( ) 清空
dic.popitem( ) 随机删除;py3.6删除最后一个,py3.5中随机删除
改:
dic.update({'':'','':''}) 更新,update括号中放一个字典 两个字典中都没有一样的就是合并 dic1 = {"11":"AA","22":"BB"} dic2 = {"33":"CC","44":"DD"} dic1.update(dic2) print(dic1) 结果是dic1 = {"11":"AA","22":"BB","33":"CC","44":"DD"} 如果被更新的内容在更新的内容中,值就会被覆盖 dic1 = {"11": "AA", "22": "BB"} dic2 = {"11":"CC","44":"DD"} print(dic1) 结果是dic1 = {"11":"CC","22":"BB","44":"DD"} dic[键] = '值' ps: 字典中没有的时候叫增,有这个键就是字典的改 dic = {"11":"22","33":"44"} dic["11"] = ""55" print(dic) 结果为{"11":"55","33":"44"}
查:
通过键查找 print(dic[键]) 如果键不存在就报错
print(dic.get(键)) 如果键不存在不报错,返回None
dic.setdefault(键) 不存在返回None
其他操作:
dic = {}
循环打印字典的键:
for i in dic:或者for i in dic.keys():
print(dic.keys)==> dict_keys(['33','66']) keys,获取键,高仿列表
循环打印字典的值:
for i in dic:或者for i in dic.values():
print(dic.values)==> dict_values(['','']) values获取值,高仿列表
循环打印字典的键值对(解构):
for i in dic:或者for i in dic.items():
print(dic.items) items获取键值,以元祖的形式显示
for k,v in dic.items:
print(k)
print(v) 在取出键值对时直接做了解构
补充:
dic.get(键,'提示语句') 如果没有,就会返回提示语句 dic.pop(键,'提示语句') 如果没有,就会返回提示语句 dic3 = dict.fromkeys([1,2,3,4,5,6],'好嗨哟') 快速补充,如果不写,默认为None dic3 = dict.fromkeys([1,2,3,4,5,6],[1,2,3]) dic3[3].append( ),添加的内容是所有都加 第一个参数为键,是可迭代对象 第二个参数为值,值无所谓 是因为创建新字典的值用的都是一个
集合:
例: se = {1,25,6,3,58,1,3,5,86,8,4,2,1}
set(天然去重),存出一些数据 跟列表有点像,和字典更像(单个的)
不能使用下标,是无序的
一行代码去重:
lst = [1,2,3,4,5,8,2,1,4,3,6]
print(lst(set(lst)))
集合的增删改查:
增:
se.add()
se.update() update括号中是可迭代对象
删:
se.pop() 集合中默认删除第一个
se.remove() 通过内容删除
查询:
for循环
常用操作:
s1 = {'刘能','赵四','皮革厂'} s2 = {'刘科长','冯乡长','皮革厂'} 交集: s1&s2 并集: s1|s2 差集: s1-s2 反差集: s1^s2 子集: s1<s2 超集: s2>s1