键值对数据 dict dict = {'键':'值'}python
存储数据 字典的查找快一些(消耗的内存大)面试
不可哈希的,就是可变的数据code
可变的数据不能哈希 不可变的数据能哈希对象
字典的键:不可变数据 类型 键不能重复 重复的话就会把值覆盖索引
字典的值 :能够随意内存
查 :rem
print(dic['25']) #经过键去查找值
增:get
dic[11] = '小米'
dic.setdefault(11,'华为') #1.先去字典中经过11这个键去查有没有 就是None #2.若是是值 就不进行添加 #3.若是是None,就添加返回的是添加的值
删:it
del dic #删除整个字典 del dic[键] #经过键删除 dic.pop('键') #pop经过指定键删除 pop也有返回值 返回的被删除的值 dic.clear() #清空 dic.popitem() #随机删除 python3.6删除最后一个 python3.5中随机删除
改:class
dic.update(字典)更新 被更新的内容若是在要更新的内容中那值就回覆盖 两个字典,都没同样的是合并 dic2['33'] = 'tsp'是字典中没有的时候才叫增,若是字典中这个键存在就叫作修改
查:
print(dic2['33']) #经过键查找 若是键不存在 就报错 print(dic2.get(2)) #经过键查找 若是不存在不会报错返回None print(dic.setdefault('33')) #不存在返回None
其余操做:
dic2 = {'33':'gg','66':'pp'} for i in dic2: print(i) for i in dic2: print(dic2.get(i)) print(dic2.keys())高仿列表dic_key(['33','66'])不能使用下标 print(dic2.vaules())高仿列表dic_value(['gg','pp'])不能使用下标 for i in dic2.values(): print(i) for i in dic2.items(): print(i) for k,v in dic.items(): print(k) print(v)
解构:
a,b,c = 1,2,3 '456' [7,8,9] (7,8,9) {'1':8,'2':9,'3':0}
# 面试题 用一行交换a,b的值 a = 10 b = 20 a,b = b,a print(a,b)
keys() #获取全部的键 高仿列表 values() #获取全部的值 高仿列表 item() #获取键值 以元组的形式显示
补充:
dic2 = {'33':'gg','66':'pp'} ret = dic2.get('qq',你傻啊,没有还要拿) ret = dic2.pop('qq','没有') 这是坑: dic3 =dict.fromkeys([1,2,3,4,5,6],[1,2,3]) print(dic3) 第一个参数是键 要是可迭代的对象 第二个参数是值,值是无所谓是由于建立的新字典的值用的都是一个值是一个可变数据类型
字典的嵌套:
dic1 = dic['陈冠希']['阿娇']
集合:
set 集合 存储数据 自然去重 无序不能使用索引 se = {1,2,3,45,234,12,32,12} 列表有点 没有值的字典 面试题 lst = [1,2,3,4,12,3,4]去重 print(list(set(lst))) se.add(6) se.update('123') 可迭代的对象 se.clear se.pop se.remove(4) 经过内容删除
s1 = {'刘能','赵四','皮革厂'} s2 = {'刘科长','冯乡长','皮革厂'} s1 & s2 交集 s1 | s2 并集 s1 - s2 差集 不显示共有的 s1 ^ s2 反差集 显示不共有的 s1 = frozenset(['','','','']) print(s1)