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
  • 相关阅读:
    使用NBU进行oracle异机恢复
    mycat偶尔会出现JVM报错double free or corruption并崩溃退出
    exp导出数据时丢表
    service_names配置不正确,导致dg创建失败
    XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
    HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端
    java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类
    【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版
    java内部类深入详解 内部类的分类 特点 定义方式 使用
    再谈包访问权限 子类为何不能使用父类protected方法
  • 原文地址:https://www.cnblogs.com/evenyao/p/9155097.html
Copyright © 2011-2022 走看看