美文网首页
day8-字典和集合

day8-字典和集合

作者: _桑心人 | 来源:发表于2018-10-09 19:00 被阅读0次

    1.元组

    • 1.什么是元组

    使用()将多个元素括起来,多个元素之间用逗号隔开
    a.
    容器,可以同时存储多个数据,不可变的,有序的
    不可变 ----》 不能增删改
    有序 ----》 可以通过下标获取元素
    b.
    元素,可以是任何类型的数据
    

    示例

    tuple1 = (1, 'yue', True, [1, 2])
    

    注意:

    (1).如果元组的元素只有一个的时候,必须在元素的后面加逗号

    代码示例

    tuple2 = (100)
    print(type(tuple2))
    tuple2 = (100,)
    print(type(tuple2))
    

    运行结果

    <class 'int'>
    <class 'tuple'>
    

    (2).如果有多个数据直接用逗号隔开表示的也是一个元组

    代码示例

    tuple2 = 10, 20
    print(type(tuple2))
    

    运行结果

    <class 'tuple'>
    
    • 2.元素的查

    元组的元素不支持增删改
    列表获取元素的方式,元组都支持:元组[下标],元组[:],元组[::]
    遍历:和列表一样
    

    代码示例

    tuple2 = ('星期一', '星期二', '星期三', '星期四')
    print(tuple2[1])
    print(tuple2[2:])
    print(tuple2[::-1])
    for item in tuple2:
        print(item)
    
    index = 0
    while index < len(tuple2):
        print(tuple2[index])
        index += 1
    

    运行结果

    星期二
    ('星期三', '星期四')
    ('星期四', '星期三', '星期二', '星期一')
    星期一
    星期二
    星期三
    星期四
    星期一
    星期二
    星期三
    星期四
    

    补充

    补充:获取部分元素(元素少的时候)
    可以通过相同变量的个数,来一一获取元组的元素
    

    代码示例

    x,y = (10, 20)
    print(x, y)
    

    运行结果

    10 20
    

    应用:

    ------交换两个数的值

    代码示例

    a = 10
    b = 20
    # 方法1
    """
    t = a 
    a = b
    b = t
    """
    # 方法2
    """
    a, b = b, a
    """
    

    ------可以通过在变量前加*来获取部分元素

    代码示例

    tuple2 = ('小明', 90, 89, 65, 75)
    name, *score = tuple2
    print(name, score)
    
    tuple2 = (90, 89, 65, 75, '小明')
    *score, name = tuple2
    print(score, name)
    
    tuple2 = ('男', 18645622555, 89, 65, 75, 12, '小华', '小明')
    sex, tel, *score, name = tuple2
    print(sex, name, score)
    # 列表也同样适用
    

    运行结果

    小明 [90, 89, 65, 75]
    [90, 89, 65, 75] 小明
    男 小明 [89, 65, 75, 12, '小华']
    

    ------可以通过在列表或者元组前加*,来展开列表中的元素

    代码示例

    tuple3 = (1, 2, 3, 4)
    print(*tuple3)
    

    运行结果

    1 2 3 4
    
    • .元组的运算

    +,*,==,is,in,not in
    

    代码示例

    print((1, 2, 3) + ('a', 'b'))
    print((1, 2) * 3)
    print((1, 2, 3) == (1, 2, 3))
    print((1, 2, 3) is (1, 2, 3))
    print(1 in (1, 2, 3))
    print(1 not in (1, 2, 3))
    

    运行结果

    (1, 2, 3, 'a', 'b')
    (1, 2, 1, 2, 1, 2)
    True
    False
    True
    False
    
    • 5.tuple()

    所有的序列都可以转换成元组,注意,字典只能将key值作为元组元素
    

    代码示例

    print(tuple('acsada'))
    print(tuple([1, 2, 's']))
    print(tuple(range(6)))
    

    运行结果

    ('a', 'c', 's', 'a', 'd', 'a')
    (1, 2, 's')
    (0, 1, 2, 3, 4, 5)
    
    • 6.sorted()

    可以通过 sorted()方法,对元组进行排序,产生一个新的列表
    

    代码示例

    tuple3 = 10, 2030, 5, 65
    new = sorted(tuple3)
    print(new, tuple3)
    

    运行结果

    [5, 10, 65, 2030] (10, 2030, 5, 65)
    

    2.认识字典

    什么时候用容器类型的数据?
        需要同时保存多个数据
    什么时候用列表?
        保存的多个数据是同一类型的数据(不需要区分)
    什么时候用字典?
        保存的多个数据是不同类的数据(需要区分)
    
    • 1.什么是字典

    字典是一个容器类的数据类型,可以用来存储多个数据(以键值对的形式存储).可变的,无序的
    {key1: value1, key2:value2,.......}
    可变 ---> 可以增删改
    无序的 ---> 不能通过下标取值
    键(key):用来定位值的,要求只能是不可变的数据类型(数字,字符串,元组..),是唯一的
    值(value):存储的数据,可以是任何类型的数据
    

    代码示例

    person1 = {'name': 'yuting', 'age': 18, 'face': 90, 'score': 100, 'tel': 98465161}
    print(person1['name'])
    
    dict1 = {}
    print(dict1)
    

    运行结果

    yuting
    {}
    

    3.字典的增删改查

    • 1.查(获取value)

    获取字典的值,都是通过key来获取
    a.
    字典[key] ---> 获取key对应的值
    注意:key值必须存在,否则会报错
    

    代码示例

    student = {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy'}
    print(student['name'])
    print(student['sex'])
    

    运行结果

    小明
    boy
    
    b.字典.get(key) ----> 通过key获取值
    注意:key值不存在的时候不会报错,结果是None
    

    代码示例

    print(student.get('age'), student.get('study_id'))
    

    运行结果

    30 py001
    

    注意:确定key一定存在使用[]语法,key可能不存在的时候用get语法

    c.直接遍历字典
    通过for-in遍历字典拿到的是key值
    

    代码示例

    student = {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy'}
    for x in student:
        print(x)
    

    运行结果

    name
    age
    study_id
    sex
    
    d.其他遍历方式
    

    代码如下

    # 直接拿到值
    for value in student.values():
        print(value)
    
    # 直接拿到key和value
    for key,value in student.items():
        print(key, value)
    

    运行结果

    小明
    30
    py001
    boy
    name 小明
    age 30
    study_id py001
    sex boy
    
    • 2.增(添加键值对)

    字典[key] = 值(key不存在)
    

    代码示例

    car = {}
    car['color'] = 'yellow'
    print(car)
    
    car['price'] = 300000000
    print(car)
    

    运行结果

    {'color': 'yellow'}
    {'color': 'yellow', 'price': 300000000}
    
    • 3.改(修改key对应的值)

    字典[key] = 值(key存在)
    
    • 4.删(删除键值对)

    a.del 字典[key] ----> 通过key删除键值对
    

    代码如下

    student = {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy'}
    del student['age']
    print(student)
    

    运行结果

    {'name': '小明', 'study_id': 'py001', 'sex': 'boy'}
    
    b.pop(key) ----> 取出key对应的值(实质还是从删除key对应的键值对)
    

    代码示例

    name = student.pop('name')
    print(student)
    print(name)
    

    运行结果

    {'study_id': 'py001', 'sex': 'boy'}
    小明
    

    4.字典相关操作

    • 1.字典相关运算

    == : 判断两个字典的值是否相等
    is : 判断两个字典的地址是否相等
    in 和 not in : key in 字典 / key not in 字典
    

    代码示例

    print({'a': 100, 'b': 200} == {'1': 111, '2': 2555})
    print({'a': 100, 'b': 200} is {'b': 200, 'a': 100})
    print('abc' in {'abc': 200, 'a': 100})
    print('abc' in {'a': 'abc', 'a': 100})
    

    运行结果

    False
    False
    True
    False
    
    • 2.字典相关的函数与方法

    a.
    len() ---> 获取键值对的个数
    

    代码示例

    student = {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy'}
    print(len(student))
    

    运行结果

    4
    
    b.
    字典.clear() ---> 清空字典
    

    代码示例

    student.clear()
    print(student)
    

    运行结果

    {}
    
    c.
    字典.copy() ---> 将字典中的键值对复制产生一个 新字典
    

    代码示例

    student = {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy'}
    student1 = student.copy()
    print(student1)
    

    运行结果

    {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy'}
    
    d.字典.fromkeys(序列,值)
    

    代码示例

    student3 = student.fromkeys('xya', 100)
    print(student3)
    student3 = student.fromkeys(['aaa', 'bb', 'cc'], 100)
    print(student3)
    

    运行结果

    {'x': 100, 'y': 100, 'a': 100}
    {'aaa': 100, 'bb': 100, 'cc': 100}
    
    e.
    字典.get(key) ----> key不存在去None
    字典.get(key,默认值) ----> key不存在去取默认值
    

    代码示例

    student = {}
    print(student.get('name'))
    print(student.get('name', '无名'))
    

    运行结果

    None
    无名
    
    f.
    字典.values() ---> 返回所有值对应的序列
    字典.keys() ---> 返回所有键对应的序列
    字典.items() ---> 将键值对转换成元组,作为一个序列的元素
    注意:返回的都不是列表,是其他类型的序列
    

    代码示例

    student = {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy'}
    print(student.items(), type(student.items()))
    items = list(student.items())
    print(items, type(items))
    

    运行结果

    dict_items([('name', '小明'), ('age', 30), ('study_id', 'py001'), ('sex', 'boy')]) <class 'dict_items'>
    [('name', '小明'), ('age', 30), ('study_id', 'py001'), ('sex', 'boy')] <class 'list'>
    
    g.
    字典.setdefault(key) ---> 添加键值对,键是key,值是None
    字典.setdefault(key,value) ---> 添加键值对,键是key,值是value
    注意:key存在不会对字典有任何操作(不会修改key对应的值)
    

    代码示例

    student = {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy'}
    student.setdefault('a', 100)
    print(student)
    student.setdefault('aa')
    print(student)
    

    运行结果

    {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy', 'a': 100}
    {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy', 'a': 100, 'aa': None}
    
    h.字典1.update(字典2) ---> 使用字典2中的键值对去更新字典1.
    

    代码示例

    dict = {'a': 1, 'b': 2}
    dict1 = {'b': 200, 'c': 100}
    dict.update(dict1)
    print(dict)
    

    运行结果

    {'a': 1, 'b': 200, 'c': 100}
    

    5.集合

    • 1.什么是集合(set)

    容器,可以同时存储多个数据,可变的,无序的,元素是唯一的
    可变 ----> 可以增删改
    无序 ----> 不能通过下标获取元素
    唯一 ----> 自带去重复的功能
    {元素1,元素2,.....}
    元素 :只能是不可变的数据
    

    代码示例

    set1 = {10, 20, 'asd', (10, 200)}
    print(set1)
    # set2 = {} 这是空字典
    

    运行结果

    {(10, 200), 10, 'asd', 20}
    
    • 2.集合的增删查改

    a.查(获取元素)
    集合不能单独的获取一个元素,也不能切片,只能通过for-in来遍历
    
    b.增(添加元素)
    集合.add(元素) ---> 在集合添加元素
    集合1.update(序列) ---> 将序列中的元素添加到集合1中
    

    代码示例

    set1 = {1, 2, 3}
    set1.add(4)
    print(set1)
    
    set1.update({'a', 'b'})
    print(set1)
    
    set1.update({'a': 1, 'b': 5}) # 字典只添加 key
    print(set1)
    

    运行结果

    {1, 2, 3, 4}
    {'b', 1, 2, 3, 4, 'a'}
    {'b', 1, 2, 3, 4, 'a'}
    
    c.删(删除元素)
      集合.remove(元素) ---> 删除指定的元素
    d.改(集合不能改)
    

    6.集合相关的数学运算

    集合相关的运算:是否包含,交集,并集,差集,补集

    • 1.包含

    集合1 >= 集合2 ----> 判断集合1中是否包含集合2  反之
    

    代码示例

    set1 = {1, 2, 3, 4, 5}
    set2 = {3, 4, 5, 6}
    set3 = {1, 2, 4}
    print(set1 >= set2)
    print(set1 >= set3)
    

    运行结果

    False
    True
    
    • 2.交集

    & :求两个集合公共的部分
    

    代码示例

    set1 = {1, 2, 3, 4, 5}
    set2 = {3, 4, 5, 6}
    print(set1 & set2)
    

    运行结果

    {3, 4, 5}
    
    • 3.求并集

    | :求两个集合的和
    

    代码示例

    print(set1 | set2)
    

    运行结果

    {1, 2, 3, 4, 5, 6}
    
    • 4.求差集

    集合1 - 集合2 :求集合1中除了集合2以外的部分
    

    代码示例

    print(set1 - set2)
    

    运行结果

    {1, 2}
    
    • 5.求补集

    ^ :求两集合除了公共部分以外的部分
    

    代码示例

    print(set1 ^ set2)
    

    运行结果

    {1, 2, 6}
    

    7.类型转换

    • 1.整型

    int()
    浮点数,布尔,部分字符串可以转换成整型
    只有去掉''后本身就是一个整数的字符串才能转换成整型
    

    代码示例

    print(int(34))
    print(int('-34'))
    print(int('+34'))
    

    运行结果

    34
    -34
    34
    
    • 2.浮点数

    float()
    整数,布尔,部分字符串可以转换成浮点数
    去掉''本身就是一个数字的字符串才能转换成浮点数
    

    代码示例

    print(float(100))
    print(float('42.6'))
    

    运行结果

    100.0
    42.6
    
    • 3.布尔

    bool()
    所有的数据都可以转换成布尔值
    为空为0的值转换成False,其他的数据 都转换成True
    

    代码示例

    print(bool('sssad'))
    print(bool(''))
    print(bool(0))
    print(bool(None))
    

    运行结果

    True
    False
    False
    False
    
    • 4.字符串

    str()
    所有的数据都可以转换成字符串
    数据转换成字符串,就是在数据的最外面加引号
    

    代码示例

    print(str(100))
    print(str(True))
    print(str([1, 2, 'sg']))
    print([str({'a': 1, 's': 'sd'})])
    list_str = str([1, 2, 3])
    print(len(list_str))
    

    运行结果

    100
    True
    [1, 2, 'sg']
    ["{'a': 1, 's': 'sd'}"]
    9
    
    • 5.列表

    list()
    序列才能转换成列表.
    将序列中的元素作为列表的元素.字典转换成列表,将字典的key作为列表的元素
    

    代码示例

    print(list('ada556a'))
    print(list((23, 45, 'sad')))
    print(list({'a': 56, 1: 56}))
    print(list({'a': 56, 1: 56}.items()))
    

    运行结果

    ['a', 'd', 'a', '5', '5', '6', 'a']
    [23, 45, 'sad']
    ['a', 1]
    [('a', 56), (1, 56)]
    
    • 6.元组

    tuple()
    只能将序列转换成元组
    

    代码示例

    print(tuple('sada'))
    print(tuple({'a': 100, 'b': 89}))
    

    运行结果

    ('s', 'a', 'd', 'a')
    ('a', 'b')
    
    • 7.字典

    dict()
    序列的每个元素有两个元素的数据才能转换成字典
    

    代码示例

    print(dict([(1, 2), ('a', 6), ['sad', 56]]))
    tuple1 = ((1, 2),)
    print(dict(((1, 2), {'a', 'b'})))
    print(dict(tuple1))
    

    运行结果

    {1: 2, 'a': 6, 'sad': 56}
    {1: 2, 'a': 'b'}
    {1: 2}
    
    • 8.集合

    set()
    序列可以转换成集合,有去重的功能
    

    代码示例

    print(set([1, 1, 90, 3, 10, 10]))
    

    运行结果

    {10, 1, 90, 3}
    

    相关文章

      网友评论

          本文标题:day8-字典和集合

          本文链接:https://www.haomeiwen.com/subject/keqyaftx.html