字典、元组、集合内置方法和集合的运算
字典的内置方法
1.定义
1.定义空字典
d = { }
2.将多个变量转换成字典
例:
1 info = dict(name='caimin', age=18) 2 print(info) # {'name': 'caimin', 'age': 18}
2.支持key取值
不支持索引取值
例:
1 dct = {'name': 'caimin', 'age': '18', 'hobby': ['lumao', 'novel']} 2 print(dct['hobby'][0]) # lumao
3.赋值操作
对字典中K值对应的V进行修改,当K值存在时,K指向新的V值,如过K值不存在时,就新增加一个K :V
例:
1 dct = {'name': 'caimin', 'age': '18', 'hobby': ['lumao', 'novel']} 2 dct['name'] = 'luoxi' 3 print(dct) 4 dct['shengao'] = 160 5 print(dct)
4.成员运算 in和not in
字典暴露在外的永远是K值
例:
1 dct = {'name': 'caimin', 'age': '18', 'hobby': ['lumao', 'novel']} 2 print('caimin' in dct) # False 3 print('name' in dct) # True 4 print('name' not in dct) # False
5.删除(pop、del)
pop能够将删除之后的值重新赋予给新的字典,但是del不能
例:
1 dct = {'name': 'caimin', 'age': '18', 'hobby': ['lumao', 'novel']} 2 res = dct.pop('name') # {'age': '18', 'hobby': ['lumao', 'novel']} 3 print(dct) 4 del dct['age'] 5 print(dct) # {'hobby': ['lumao', 'novel']}
6.提取值(k:keys,V:valuse,组合:items)
. keys( )将所有K值用列表的形式提取出来
. valuse( )将所有的V值用列表的形式提取出来
. items ( ) 将字典中的K:V用元组的形式提取出来,再将组合成一个内有两个元素为元组的列表
提取出来时由于底层做了封装,赋予给新的变量时,并不会直接变成列表,但是可以直接调取使用,如果想要输出成列表,则需要进行转换
例:
1 dct = {'name': 'caimin', 'age': '18', 'hobby': ['lumao', 'novel']} 2 print(dct.keys()) # dict_keys(['name', 'age', 'hobby']) 3 res = list(dct.keys()) 4 print(res) # ['name', 'age', 'hobby'] 5 print(dct.values()) # dict_values(['caimin', '18', ['lumao', 'novel']]) 6 print(dct.items()) # dict_items([('name', 'caimin'), ('age', '18'), ('hobby', ['lumao', 'novel'])])
当用for循环读取字典时,什么都不写或者.keys读取的是K值,.valuse时才会读取V值, .itmes读取出来的是K和V组成的元组
例:
1 d = {'username': 'kevin', 'age': 18} 2 for i in d: 3 print(i) # username age 4 for i in d.keys(): 5 print(i) # username age 6 for i in d.values(): 7 print(i) # kevin 18 8 for i in d.items(): 9 print(i) # ('username', 'kevin') ('age', 18)
7.不报错取值(get)
当用 d [ ]直接取值时,如果K值不在字典中,程序会报错
使用 . get 时当K值存在时,会直接取出K值对应的V,当K值不存在时会返回 None。
使用get 最多读取两个值,当其中一个值不存在时,会取出另外另一个的V值,当两个值都不在时,会将第二个值当成字符串输出
例:
1 d = {'name': 'kevin', 'age': 18} 2 print(d.get('name1', 'name')) # kevin 3 res = d.get('name1', 'name2') # name2 4 print(type(res)) # <class 'str'>
8.删除末尾K:V,并弹出(popitem)
. popitem ( ) 删去字典内最后一组K:V,并弹出所删除的内容,但括号里面不能填写数字或者K
例:
1 d = {'username': 'jack', 'age': 18, 'gender': 'male'} 2 print(d.popitem()) # ('gender', 'male')
9.修改或添加(update)
新字典里有原有的字典的K,则根据新字典的键值对旧字典进行修改,没有的则添加于旧字典中
例:
1 d = {'username': 'jack', 'age': 18, 'gender': 'male'} 2 d1 = {'username': 'tank', 'hobbys': ['read', 'music']} 3 d.update(d1) 4 print(d) # {'username': 'tank', 'age': 18, 'gender': 'male', 'hobbys': ['read', 'music']}
10.了解(fromkeys(将所有K值赋予同一个V)、setdefault)
1.fromkeys
将一个列表所有字符串赋予同一个内址的列表,被fromkeys生成的字典,任何一个的V值发生变化,其他的都随之变化
dic = dict.fromkeys( [ ],[ ] )
例:
1 dic = dict.fromkeys(['k1', 'k2', 'k3',],[111,222]) 2 print(dic) # {'k1': [111, 222], 'k2': [111, 222], 'k3': [111, 222]} 3 dic['k1'].append(333) 4 print(dic) # {'k1': [111, 222, 333], 'k2': [111, 222, 333], 'k3': [111, 222, 333]}
2.setdefault
如果原本K存在时,返回字典中K所对应的V值,在字典中添加新的K:V键值对,并弹出所添加的V值内容
例:
1 dic = {'k1': 111, 'k2': 222} 2 dic.setdefault('k3', 333) 3 print(dic) # {'k1': 111, 'k2': 222, 'k3': 333} 4 print(dic.setdefault('k3', 333)) # 333
元组的内置方法
1.类型转换
当元组内只有一个元素时,要加上逗号结尾,否则不是元组类型
所有元素都可以转化为元组,除了单个数字
例:
1 print(tuple('hello')) # ('h', 'e', 'l', 'l', 'o') 2 print(tuple((1, 2, 3, 4))) # (1, 2, 3, 4) 3 print(tuple([1, 2, 3, 4])) # (1, 2, 3, 4) 4 print(tuple({'a': 1, 'b': 2})) # ('a', 'b') 5 print(tuple({1, 2, 3, 4})) # (1, 2, 3, 4)
2.索引取值
通过索引取值,同列表相同,x为正数时从左往右取值,当x为负数时,从右往左取值,此时没有0位
tup [ x ]
3.切片
同列表
例:
1 t = (1, 2, 3, 4) 2 print(t[0:2]) # (1, 2) 3 print(t[0:]) # (1, 2, 3, 4) 4 print(t[:2]) # (1, 2) 5 print(t[0:3:2]) # (1, 3)
4.求长度(len)
同列表
len( t )
5.成员运算 in 和 not in
xxx in t 、 xxx not in t
6.循环
for line in t
print(line)
集合的内置方法
1.类型转换
集合不能为当个数字组成,其他类型都可以
例:
1 print(set('hello')) # {'l', 'e', 'o', 'h'} 2 print(set([1, 2, 3, 4, 4, 3, 2, 1])) # {1, 2, 3, 4} 3 print(set((1, 2, 3, 4, 5))) # {1, 2, 3, 4, 5} 4 print(set({'username': 'kevin', 'age': 28})) # {'age', 'username'}
2.将一个列表去重且保留原来的顺序
1 name_list = ['kevin', 'tank', 'tony', 'tony', 'jack', 'jack', 'jack', 'tony', 'ly',] 2 new_name = [] 3 for name in name_list: 4 if name not in new_name: 5 new_name.append(name) 6 print(new_name) # ['kevin', 'tank', 'tony', 'jack', 'ly']
集合的关系运算
1.合集/并集( | )
将两个集合中所有的元素,去重,组合成一个新的集合
例:
1 s1 = {1, 2, 3, 6, 9} 2 s2 = {2, 6, 7, 8, 4} 3 print(s1 | s2) # {1, 2, 3, 4, 6, 7, 8, 9}
2.交集(&)
求两个集合中共同的元素
例:
1 s1 = {1, 2, 3, 6, 9} 2 s2 = {2, 6, 7, 8, 4} 3 print(s1 & s2) # {2, 6}
3.差集(-)
去除第一个集合中两个元素的交集
例:
1 s1 = {1, 2, 3, 6, 9} 2 s2 = {2, 6, 7, 8, 4} 3 print(s1 - s2) # {1, 3, 9} 4 print(s2 - s1) # {8, 4, 7}
4.对称差集(^)
就是两个去除两个集合相同的部分,再将两个集合组合成一个集合
例:
1 s1 = {1, 2, 3, 6, 9} 2 s2 = {2, 6, 7, 8, 4} 3 print(s1 ^ s2) # {1, 3, 4, 7, 8, 9}
5.是否相等 (==)
就是两个集合是否相等,然后返回布尔值
s1 == s2
6.父集
一个集合包不包含另外一个集合,然后返回布尔值
1 print({1, 2, 3} >= {1, 2, 3}) # True 2 print({1, 2, 3} > {1, 2}) # True