第五章 数据类型内置方法(三)--元组、字典、集合的内置方法

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

还没开始就已经要tu了image

元组的内置方法

作用:元组与列表类似,也可以存多个任意类型的元素,不同之处在于元组的匀速不能修改,元组又叫不可变列表,用于记录多个固定不允许修改的值,单纯用于取值
定义方式
# 在()内用都好分隔开多个任意类型的值
# list1 = ("中国", "美国", "英国")  # 本质:list = tuple("中国", "美国", "英国")
# 强调:如果元组内只有一个值,则必须加一个逗号,否则()就只是包含的意思而非定义元组
# list1 = ("中国", )  # 本质:countries = tuple("中国")
类型转换及使用
# 1.1 类型转换
# 但凡能被for循环的遍历的数据都可以传给tuple()装换成元组类型
# print(tuple('abcde'))  # ('a', 'b', 'c', 'd', 'e')
# print(tuple([1, 2, 3]))   # (1, 2, 3)
# print(tuple({"name": "maby", "age": 18}))  # ('name', 'age')
# print(tuple((1, 2, 3)))  # (1, 2, 3)
# print(tuple({1, 2, 3}))  # (1, 2, 3)
# 1.2 使用
# tuple1 = (1, 'hhaha', 15000.00, 11, 22, 33)
# # #1.1 按索引取值(正向取+反向取):只能取,不能改否则报错!
# # print(tuple1[0])  # 1
# # print(tuple1[-2])  # 22
# # print(tuple1[0]) = 'hehe'  # 报错:TypeError:
# # 1.2 切片(顾头不顾尾,步长)
# print(tuple1[0:6:2])  # (1, 15000.0, 22)
# # 1.3 长度
# print(len(tuple1))  # 6
# # 1.4 成员运算 in 和 not in
# print('hhaha' in tuple1)  # True
# print('hhaha' not in tuple1)  # False
# # 1.5 循环
# for i in tuple1:
#     print(i,end=' ')  # 1 hhaha 15000.0 11 22

image

字典

定义方式
# 定义:在{}内用逗号分隔开多元素,每一个元素都是key:value的形式,其中value可以是任意类型,而key则必须是不可变类型,详见第八小节,通常key应该是str类型,因为str类型会对value有描述性的功能
# 两种定义方法
# info = {'name': 'maby', 'age': 18, 'sex': 'male'}  #  #本质info=dict({....})
# {'name': 'maby', 'age': 18, 'sex': 'male'}
# info1 = dict(name='tony', age=18, sex='male')  # info={'age': 18, 'sex': 'male', 'name': 'tony'}
# {'name': 'tony', 'age': 18, 'sex': 'male'}
类型转换
# 转换1:
# info2 = dict([['name', 'maby'], ('age', 18)])
# print(info, info1, info2)  # {'name': 'maby', 'age': 18}
# 转换2:fromkeys会从元组中取出每个值当做key,然后与None组成key:value放到字典中
# infor3 = {}.fromkeys(('name', 'age', 'sex'),None)
# print(infor3)  # {'name': None, 'age': None, 'sex': None}
使用
# 1.3.1 优先掌握的操作
# dic = {
#     'name': 'xxx',
#     'age': 18,
#     'hobbies': ['play game', 'basketball']
#  }
# print(dic['name'])  # 'xxx'
# print(dic['hobbies'][1])  # 'basketball'
# 1.3.2 对于赋值操作,如果key原先不存在于字典,则会新增key:value
# dic['gender'] = 'male'
# print(dic)  # {'name': 'xxx', 'age': 18, 'hobbies': ['play game', 'basketball'],'gender':'male'}
# 1.3.3 对于赋值操作,如果key原先存在于字典,则会修改对应value的值
# dic['name'] = 'maby'
# print(dic)  # {'name': 'maby', 'age': 18, 'hobbies': ['play game', 'basketball'], 'gender': 'male'}

# 2 长度len
# print(len(dic))  # 3

# 3 成员运算in和not in
# print('name' in dic)  # True

# 4 删除
# dic.pop('name')  # 通过指定字典的key来删除字典的键值对
# print(dic)  # {'age': 18, 'hobbies': ['play game', 'basketball']}

# 5 键keys(),值values(),键值items()
# dic = {'age': 18, 'hobbies': ['play game', 'basketball'], 'name': 'xxx'}
# # 获取字典所有的key
# print(dic.keys())  # dict_keys(['name', 'age', 'hobbies'])
# # 获取字典所有的value
# print(dic.values())  # dict_values(['xxx', 18, ['play game', 'basketball']])
# # 获取字典所有的键值对
# print(dic.items())  # defict_items([('name', 'xxx'), ('age', 18), ('hobbies', ['play game', 'basketball'])])

# 6. 循环
# 6.1 默人遍历的是字典的key
# for key in dic:
#     print(key, end=' ')  # name age hobbies
# 6.2 只遍历key
# for key in dic.keys():
#     print(key, end=' ')  # name age hobbies
# 6.3 只遍历value
# for key in dic.values():
#     print(key,end=' ')  # xxx 18 ['play game', 'basketball']
# 6.4 遍历key与value
# for key in dic.items():
#     print(key,end=' ')  # ('name', 'xxx') ('age', 18) ('hobbies', ['play game', 'basketball'])
需要掌握的操作

image

# 7 需要掌握的操作
# 7.1 get() 总结就是key存在,则获取key对应value值,没有不会报错,会默认返回None
# dic= {'k1':'maby','k2':'Tony','k3':'JY'}
# print(dic.get('k1'))  # maby  key存在,则获取key对应的value值
# res=dic.get('xxx') # key不存在,不会报错而是默认返回None
# print(res)  # None
# res=dic.get('xxx',666) # key不存在时,可以设置默认返回的值
# print(res)  # 666
# 7.2 pop()
# dic = {'k1': 'maby', 'k2': 'passible', 'k3': 'GG'}
# v = dic.pop('k2')  # 删除指定的key对应的键值对,并返回值
# print(v, dic)  # passible {'k1': 'maby', 'k3': 'GG'}
# 7.3 popitem()
# dic= {'k1':'maby','k2':'Tony','k3':'JY'}
# item = dic.popitem()  # 随机删除一组键值对,并将删除的键值放到元组内返回
# print(dic)  # {'k3': 'JY', 'k2': 'Tony'}
# print(item)  # ('k1', 'maby')
# 7.4 update()
# 用新字典更新旧字典,有则修改,无则添加
# dic= {'k1':'jason','k2':'Tony','k3':'JY'}
# dic.update({'k1':'JN','k4':'xxx'})
# print(dic)  # {'k1': 'JN', 'k3': 'JY', 'k2': 'Tony', 'k4': 'xxx'}
# 7.5 fromkeys()
# dic = dict.fromkeys(['k1','k2','k3'],[])
# print(dic)  # {'k1': [], 'k2': [], 'k3': []}
# 7.6 setdefault
# key不存在则新增键值对,并将新增的value返回
# dic = {'k1': 111, 'k2': 222}
# res = dic.setdefault('k3', 333)
# print(res)  # 333
# print(dic)  # 字典中新增了键值对  # {'k1': 111, 'k3': 333, 'k2': 222}
# # key存在则不做任何修改,并返回已存在key对应的value值
# dic = {'k1': 111, 'k2': 222}
# res = dic.setdefault('k1', 666)
# print(res)  # 111
# print(dic)  # 字典不变  # {'k1': 111, 'k2': 222}

image

集合

定义
"""
定义:在{}内用逗号分隔开多个元素,集合具备以下三个特点:
     1:每个元素必须是不可变类型
     2:集合内没有重复的元素
     3:集合内元素无序
"""
# s = {1, 2, 3, 4}  # 本质 s = set({1,2,3,4})

# 注意1:列表类型是索引对应值,字典是key对应值,均可以取得单个指定的值,而集合类型既没有索引也没有key与值对应,所以无法取得单个的值,而且对于集合来说,主要用于去重与关系元素,根本没有取出单个指定值这种需求。

# # 注意2:{}既可以用于定义dict,也可以用于定义集合,但是字典内的元素必须是key:value的格式,现在我们想定义一个空字典和空集合,该如何准确去定义两者?
# d = {}  # 默认是空字典
# s = set()  # 这才是定义空集合
类型转换
# 但凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型
# s = set([1,2,3,4])
# s1 = set((1,2,3,4))
# s2 = set({'name':'maby',})
# s3 = set('egon')
# print(s,s1,s2,s3)  # {1, 2, 3, 4} {1, 2, 3, 4} {'name'} {'e', 'o', 'g', 'n'}
运算
# 2 关系运算
# 定义两个集合l1 和 l2 分别存放各自的数字或者字母
# l1 = {1, 2, 3, 4, 'maby'}
# l2 = {3, 4, 5, 'passible'}
# 2.1 合集/并集(|):求两个用户所有的值(重复的值只留一个)
# print(l1|l2)  # {1, 2, 3, 4, 5, 'maby', 'passible'}
# 2.2 交集(&)0:求两个共同的值
# print(l1&l2)  # {3, 4}
# 2.3 极差(-):
# print(l1 - l2)  # {1, 2, 'maby'} l1 独有的值
# print(l2 - l1)  # {'passible', 5} l2 独有的值
# 2.4 对称集(^) 求两个独有的值(除去相同的值)
# print(l1^l2)  # {1, 2, 5, 'maby', 'passible'}
# 2.5 值是否相等(==)
# l1 == l2  # False

# 3. 父集:一个集合是否包含另外一个集合
# 3.1 包含则返回True
# print({1, 2, 3} > {1, 2})  # True
# print({1, 2, 3} >= {1, 2})  # True
# 3.2 不存在包含关系,则返回False
# print({1, 2, 3} > {1, 3, 4, 5})  # False
# print({1, 2, 3} >= {1, 3, 4, 5})  # False

# 4. 子集
# print({1, 2} < {1, 2, 3})  # True
# print({1, 2} <= {1, 2, 3})  # True

# 5. 去重
# 集合去重有局限性
# 1. 只能针对不可变类型
# 2. 集合本身是无序的,去重之后无法保留原来的顺序
# l=['a','b',1,'a','a']
# s=set(l)
# print(s) # 将列表转成了集合  # {'b', 'a', 1}
# l_new=list(s) # 再将集合转回列表
# print(l_new)  # ['b', 'a', 1] # 去除了重复,但是打乱了顺序

# 针对不可变类型,并且保证顺序则需要我们自己写代码实现,例如
# ll = [33, 22, 11, 22, 11, 44, 33, 22, 55, 66, 77, 77, 66, 55, 44]
# 基本要求:去重即可
# s1 = set(ll)
# ll1 = list(s1)
# print(ll1)
# 拔高要求:去重并保留原来的顺序
# new_list = []
# for i in ll:
#     if i not in new_list:
#         new_list.append(i)
#     else:
#         continue
# print(new_list)

# 6. 其他操作
# 1.长度
# s = {'a', 'b', 'c'}
# print(len(s))  # 3

# 2.成员运算
# print('c' in s)  # True
# 3.循环
# for item in s:
    # print(item)  # ...c a b

image

迟早💊......

posted @ 2021-11-09 20:07  hai起奈  阅读(69)  评论(0编辑  收藏  举报