zoukankan      html  css  js  c++  java
  • Python基础 之 tuple类-元组 和 dict类-字典

    tuple 元组

    一、tuple 类的基本属性

    1.元组,有序;
    元素不可被修改,不能被增加或者删除
    tuple类

    tu = (111,22,33,44)

    一般写元组的时候,推荐在最后加入,和类方法进行区别

    tu2 = (111,"root",(11,22),[(33,44)],True,22,33,44,)

    元组的一级元素不可修改、增加或删除

    tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
    v = tu[3]
    v.extend((11,))
    print(tu)
    #(111, 'root', (11, 22), [(33, 44), 11], True, 22, 33, 44)

    2.元组索引

    tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
    v = tu[0]
    print(v)
    n = tu[3][0][0]    #注意这里
    print(n)
    #111
    #33
    元组索引

    3.元组切片

    tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
    v = tu[0:2]
    print(v)
    #(111, 'root')
    元组切片

    ***  v = tu[0] 和 del tu[0] 都是错误的,因为元组不能被修改、添加和删除

    4.可迭代对象

    元组成为被迭代对象,可以被 for 循环

    tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
    for item in tu:
        print(item)
    #111
    #root
    #(11, 22)
    #[(33, 44)]
    #True
    #22
    #33
    #44
    for item in tu:

    元组成为被迭代对象,添加进 list 列表中

    li = ["root","even"]
    li.extend((11,22,33,))
    print(li)
    #['root', 'even', 11, 22, 33]
    元组为被迭代对象

    5.元组的转换

    把字符串转换成 tuple 元组

    s = "root"
    v = tuple(s)
    print(v)
    #('r', 'o', 'o', 't')
    tuple()

    把 list 列表转换成 tuple 元组

    li = ["even",123]
    v = tuple(li)
    print(v)
    #('even', 123)
    tuple()

    把 tuple 元组转换成 list 列表

    tu = (123,123,"root")
    v = list(tu)
    print(v)
    #[123, 123, 'root']
    list()

    元组转换成字符串(既有数字又有字符串的情况)
    需要自己写 for 循环一个一个处理

    tu = (11,22,33,"123","even")
    s = ""
    for i in tu:
        s = s + str(i)
    print(s)
    #112233123even

    元组转换成字符串(列表中的元素只有字符串的情况)
    直接使用字符串 join 方法

    tu = ("123","alex")    #这里的"123"不是数字
    v = "_".join(tu)
    print(v)
    #123alex

    二、tuple 类的方法

    1.count

    统计某个值出现的次数(类似list类中的意义)

    tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
    n = tu.count(22)
    print(n)
    #1
    count()

    2.index

    找到某个值的索引位置(类似list类中的意义)

    tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
    n = tu.index(22)
    print(n)
    #5
    index()

    三、tuple 类 —— 总而言之

    在创建数据不允许被修改的时候,使用tuple类
    除非把tuple转换成list,否则无法对其修改

    dict 字典

    一、dict 类的基本属性

    1.字典的基本结构

    info = {"k1":"v1","k2":"v2"}
    
    info = {
            "k1":"v1",    #键值对(一个键key和一个值value生成的一对)
            "k2":"v2"
            }

    2.值 - value

    字典的value可以是任何值

    info = {
        "k1": 18,
        "k2": True,
        "k3": [
            11,
            [],
            (),
            22,
            33,
            {
                'kk1': 'vv1',
                'kk2': 'vv2',
                'kk3': (11,22),
            }
        ],
        "k4": (11,22,33,44)
    }
    print(info)
    #{'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}

    3.键 - key

    *** list列表、dict字典不能作为字典的 key

    info ={
        1: 'asdf',
        "k1": 'asdf',
        True: "123",    #True布尔值作为key,为1,因为上面已经有1作为key,所以这里输出会直接跳过,但布尔值可以作为key
        # [11,22]: 123    列表作为key,ide会直接报错
        (11,22): 123,
        # {'k1':'v1'}: 123    字典作为key,ide会直接报错
    
    }
    print(info)

    4.字典无序 (Python3.6版本后改为有序)

    PS:这个地方因为我在输出的时候,无论如何都是按照 key和 value对应的顺序输出,所以得出的结论,查询网上的资料后发现 3.6 版本后 dict改成了有序,

      Python2.7待测试

    info = {
        "k1": 18,
        "k2": True,
        "k3": [
            11,
            [],
            (),
            22,
            33,
            {
                'kk1': 'vv1',
                'kk2': 'vv2',
                'kk3': (11,22),
            }
        ],
        "k4": (11,22,33,44)
    }
    print(info)
    #{'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
    View Code

    5.通过索引方式找到指定元素

    info = {
        "k1": 18,
         2: True,
        "k3": [
            11,
            [],
            (),
            22,
            33,
            {
                'kk1': 'vv1',
                'kk2': 'vv2',
                'kk3': (11,22),
            }
        ],
        "k4": (11,22,33,44)
    }
    v = info['k3'][5]['kk3'][0]
    print(v)
    #11
    dict 索引

    6.字典支持 del 删除

    info = {
        "k1": 18,
        2: True,
        "k3": [
            11,
            [],
            (),
            22,
            33,
            {
                'kk1': 'vv1',
                'kk2': 'vv2',
                'kk3': (11,22),
            }
        ],
        "k4": (11,22,33,44)
    }
    del info['k1']    #删除k1的key和value
    
    del info['k3'][5]['kk1']    #删除kk1的key和value
    
    print(info)
    #{2: True, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
    dict 的删除

    7.判断

    dic = {
        "k1": 'Q'
    }
    
    v1 = "k1" in dic    #判断k1是否在字典中
    print(v1)
    
    v2 = "Q" in dic.values()    #判断Q是否在字典的values中
    print(v2)
    #True
    #True
    判断是否在字典中

    8.for 循环和 dict 类的一些方法

    for item in info:
    dict 字典在 for 循环的时候,默认循环输出键值 key

    info = {
        "k1": 18,
        2: True,
        "k3": [
            11,
            [],
            (),
            22,
            33,
            {
                'kk1': 'vv1',
                'kk2': 'vv2',
                'kk3': (11,22),
            }
        ],
        "k4": (11,22,33,44)
    }
    for item in info:
        print(item)
    #k1
    #2
    #k3
    #k4
    for item in info:

    for item in info.keys():

    效果所以等同于上面代码

    info = {
        "k1": 18,
        2: True,
        "k3": [
            11,
            [],
            (),
            22,
            33,
            {
                'kk1': 'vv1',
                'kk2': 'vv2',
                'kk3': (11,22),
            }
        ],
        "k4": (11,22,33,44)
    }
    for item in info.keys():
        print(item)
    #k1
    #2
    #k3
    #k4
    for item in info.keys():

    for item in info.values():
    for 循环输出 value 的值

    info = {
        "k1": 18,
        2: True,
        "k3": [
            11,
            [],
            (),
            22,
            33,
            {
                'kk1': 'vv1',
                'kk2': 'vv2',
                'kk3': (11,22),
            }
        ],
        "k4": (11,22,33,44)
    }
    for item in info.values():
        print(item)
    #18
    #True
    #[11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
    #(11, 22, 33, 44)
    for item in info.values():

    for item in info.keys():
    print(item,info[item])
    既输出 key也输出 value

    info = {
        "k1": 18,
        2: True,
        "k3": [
            11,
            [],
            (),
            22,
            33,
            {
                'kk1': 'vv1',
                'kk2': 'vv2',
                'kk3': (11,22),
            }
        ],
        "k4": (11,22,33,44)
    }
    for item in info.keys():
        print(item,info[item])
    #k1 18
    #2 True
    #k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
    #k4 (11, 22, 33, 44)
    输出key 和 value

    for k,v in info.items():
    print(k,v)
    另一种既输出 key 也输出 value 的方法

    info = {
        "k1": 18,
        2: True,
        "k3": [
            11,
            [],
            (),
            22,
            33,
            {
                'kk1': 'vv1',
                'kk2': 'vv2',
                'kk3': (11,22),
            }
        ],
        "k4": (11,22,33,44)
    }
    for k,v in info.items():    #将key赋值给k,将value赋值给v
        print(k,v)
    #k1 18
    #2 True
    #k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
    #k4 (11, 22, 33, 44)
    for k,v in info.items():

    二、dict 类的方法

    1.静态方法fromkeys

    根据序列,创建字典,并且指定统一的值

    v = dict.fromkeys(["k1",123,"999"])
    print(v)
    #{'k1': None, 123: None, '999': None}
    
    v = dict.fromkeys(["k1",123,"999"],111)
    print(v)
    #{'k1': 111, 123: 111, '999': 111}
    dict.fromkeys()

    2.get

    根据 key 获取值,key不存在时(None),可以指定附加值

    dic = {
        "k1":'v1'
    }
    v1 = dic.get('k1',1111)    #当k1有自己的value时,忽略后面附加值
    v2 = dic.get('k2')        #当没有k2,后面也没有加附加值时,输出None
    v3 = dic.get('k3',3333)    #当没有k3,但后面有附加值时,输出附加值
    
    print(v1)
    print(v2)
    print(v3)
    #v1
    #None
    #3333
    get()

    3.pop

    删除,并得到被删除的值

    dic = {
        "k1":'v1',
        "k2":'v2'
    }
    v = dic.pop('k1')
    
    print(v)    #输出被删除的值
    print(dic)    #输出删除操作之后的dic
    
    #v1
    #{'k2': 'v2'}
    pop()

    4.popitem

    随机删除键值对,并得到被删除的键值对

    dic = {
        "k1":'v1',
        "k2":'v2'
    }
    n = dic.popitem()
    print(n)    #输出被随机删除的键值对
    print(dic)    #输出被随机删除操作之后的dic
    #('k2', 'v2')
    #{'k1': 'v1'}
    popitem()

    5.setdefault

    设置值,若已经存在,则不设置。只获取当前 key所对应的 value
        若不存在,则设置值。并获取当前 key对应的 value

    dic = {
        "k1":'v1',
        "k2":'v2'
    }
    
    n1 = dic.setdefault('k1','123')
    print(dic,n1)
    
    n2 = dic.setdefault('k111','112233')
    print(dic,n2)
    
    #{'k1': 'v1', 'k2': 'v2'} v1
    #{'k1': 'v1', 'k2': 'v2', 'k111': '112233'} 112233
    setdefault()

    6.update

    已经存在的,进行覆盖新值;不存在的,进行更新

    dic = {
        "k1":'v1',
        "k2":'v2'
    }
    
    dic.update({'k1':'11111','k3':123})
    print(dic)
    
    #{'k1': '11111', 'k2': 'v2', 'k3': 123}
    update()

    另一种写法:

    dic = {
        "k1":'v1',
        "k2":'v2'
    }
    
    dic.update(k1=123,k3=333,k5="sdfsdf")
    print(dic)
    #{'k1': 123, 'k2': 'v2', 'k3': 333, 'k5': 'sdfsdf'}
    update()

    * dict类最常用的几个功能和方法

    .keys()
    .values()
    .items()
    get
    update
  • 相关阅读:
    洛谷mNOIP模拟赛Day2-星空
    洛谷mNOIP模拟赛Day2-将军令
    洛谷mNOIP模拟赛Day2-入阵曲
    洛谷mNOIP模拟赛Day1-斐波那契
    洛谷mNOIP模拟赛Day1-数颜色
    计蒜客NOIP2017提高组模拟赛(五)day1-展览
    HDU1700Points on Cycle(圆心半径)
    HDU1086You can Solve a Geometry Problem too (斜率问题)
    湖南省第十届大学生计算机程序设计竞赛1503: 点到圆弧的距离(atan()函数的应用)
    HDU献给杭电五十周年校庆的礼物 (切蛋糕,线段划分区域)
  • 原文地址:https://www.cnblogs.com/evenyao/p/9155097.html
Copyright © 2011-2022 走看看