字典
dict1 = {'name':'kobe','age':40,'list':[1,2,3,4]}
无序的,key必须为不可变类型
增
dic = {'name':'kobe','age':40,'height':196} dic['position'] = 'full back' #有则覆盖更改,无则增加 dic.setdefault('position','full back') #有则不改,无则增加
删
dic.pop('height') #根据key 删除,返回删除的值 dic.pop('height1','没有删除的键,自定义返回值') #pop 删除时如果没有删除的键会报错,所以要自定义返回值 dic.clear() #清空字典内容 del dic #内存级别全部删除 del dic['name'] #删除指定键值对 dic.popitem() #随机删除,并以元祖的形式返回删除的键值对
改
dic['name'] = 'wade' #事先存在则更改,否则添加 dic1.update(dic2) #把dic2中的键值对全部添加到dic1中,如果有相同的键则更新
dict.setdefault(key, default=None) #如果键不存在于字典中,将会添加键并将值设为默认值,如果键存在那么不执行,default不设置那么值就是none
查
dic['name'] #指定键来查询,若无则报错 dic.get('name1','自定义') #若无查询key,默认返回None,也可以自定义返回值 dic.keys() #所有字典的键,以([...])形式显示,可以转换成列表,也可以for循环 dict_keys(['name', 'age', 'height']) list(dic.keys())
dic.values() #所有字典的值,以[(...)]形式显示,可以转换成列表,也可以for循环 dict_values(['kobe', 40, 196]) dic.items() #所有键值对以元祖形式存放在[()]中,可以转换成列表,也可以k,v 形式for 循环 dict_items([('name', 'kobe'), ('age', 40), ('height', 196)]) for k,v in dic.items: print(k,v)
其他方法
len(dic) #统计键值对二个数 dic.fromkeys('asd','test') #迭代asd来创建字典 {'a': 'test', 's': 'test', 'd': 'test'} dic.fromkeys('asd',[]) #创建空列表为相同内存地址,任何一个列表中添加值都是一起添加 {'a': [], 's': [], 'd': [], 'f': []}
元祖
tu1 = (1,2,[1,'test'],True)
不可变数据类型(子类不可变,孙类可变)
常见使用方法
索引
切片
count
len
index
集合
set1 = {1,2,True,(1,2,3,)}
无序不可重复的,里面的元素必需是可哈希(不可变)的,但是其本身是可变的。
应用
去重
list1 = [1,2,3,1,3,4,5,6,2]
set1 = set(list1)
关系测试
增
set.add('666') set.update('asdf') #迭代增加,asdf分为四个单个元素迭代增加到集合中
删
set.pop() #随机删除 set.remove(1) #指定元素删除 set.clear() #清空 del set #删除整个集合
交集
set1 = {1,2,3,4,5,6} set2 = {4,5,6,7,8,9} set11 = set1 & set2 print(set11) {4, 5, 6}
并集
set11 = set1 | set2 #自动去重 print(set11) {1, 2, 3, 4, 5, 6, 7, 8, 9}
差集
set11 = set1 - set2 print(set11) {1, 2, 3}
反交集
set11 = set1 ^ set2 print(set11) {2, 3, 4, 5, 6}
子集
判断一个集合完全包含另一个集合
print(set1 < set2) False 或 print(set1.issubset(set2))
超子集
print (set1 > set2) False 或 print(set1.superset(set2)) False
frozenset 把集合变为不可变类型
set3 = frozenset(set1)