caicaix

导航

字典、元组、集合内置方法和集合的运算

字典的内置方法

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

 

posted on 2023-05-22 20:55  菜CAIx  阅读(15)  评论(0编辑  收藏  举报