• python记录_day05 字典


    字典

    字典由花括号表示{ },元素是key:value的键值对,元素之间用逗号隔开

    特点:1、字典中key是不能重复的 且是不可变的数据类型,因为字典是使用hash算法来计算key的哈希值,然后用哈希值来存储键值对数据

       2、字典中元素是无序的 

       3、value值可以是任意类型的数据

    注:字典中的key是可hash的,可hash的数据的都是不可变的数据类型

      已知的可哈希(不可变)的数据类型: int, str, tuple(元组), bool

      不可哈希(可变)的数据类型: list(列表), dict(字典), set(集合)

    增删改查

    创建一个空字典---两种方式:

    dic ={}

    dic = dict()

    新增(两种方式)

    dic[key] = value   # 可以新增也可修改已有key的value值

    dic.setdefault(key, value)   # 如果key是没有的,新增;如果key已存在   保持原值(这个方法是分两步的 在查询会细说)

    删除(四种方式)

    pop(key)      # 必须指定一个key 删除指定元素

    popitems( )   # 随机删除一个值(字典是无序的)  但是在3.6版本里效果是删除字典最后一个元素--->原因   3.5之前字典打印输出是无序的,但在3.6之后字典打印输出是按照元素添                           加的顺序的,所以感觉用这个方法时是删除的最后一个元素,但是这个方法的源码里还是随机删除的

    del dic[key]   # 删除指定元素

    dic.clear()  #  清空字典

    修改(两种)

    dic[key] = new value    #赋一个新值

    dic.update(dic2)         #将dic2更新到dic中

    查询(三种)

    dic[key]    #查询指定元素 key不存在时报错

    dic.get(key,[xxx])    #  查询key的value    key不存在时返回xxx,如果不写xxx,默认返回None

    dic.setdefault(key,[value])   # 执行逻辑  第一步,看key是否存在,key存在, 不添加也不修改value;不存在,添加key:value键值对,value没有时默认为None

                                                                     第二步,返回key对应的value值

    常用操作

    dic.keys()  返回所有的键  返回的是一个可迭代对象,形式像列表但又不是列表

    1 dic = {"意大利":"西西里的美丽传说", "意大利2":"天堂电影院", "美国":'美国往事', "美国电视剧":"越狱"}
    2 
    3 print(dic.keys())  #dict_keys(['意大利', '意大利2', '美国', '美国电视剧'])
    4 
    5 for k in dic.keys(): # 可以迭代。 拿到的是每一个key
    6     print(k)

    dic.values()  返回所有的值

    dic = {"意大利":"西西里的美丽传说", "意大利2":"天堂电影院", "美国":'美国往事', "美国电视剧":"越狱"}
    
    print(dic.values())  #dict_values(['西西里的美丽传说', '天堂电影院', '美国往事', '越狱'])
    for value in dic.values():
        print(value)

    dic.items()  返回所有的键值对  

    1 dic = {"意大利":"西西里的美丽传说", "意大利2":"天堂电影院", "美国":'美国往事', "美国电视剧":"越狱"}
    2 
    3 print(dic.items())  #dict_items([('意大利', '西西里的美丽传说'), ('意大利2', '天堂电影院'), ('美国', '美国往事'), ('美国电视剧', '越狱')])
    4 for k ,v in dic.items():
    5     print(k ,v)
    6 
    7 #遍历字典最好的方案
    8 for k, v in dic.items():  # 拿到的是元组(key, value)  这是解包操作
    9     print(k,v)  #直接拿到key和value

    字典嵌套

    wf = {
        "name":"汪峰",
        "age":42,
        "hobby":"抢头条",
        "代表作":["春天里","怒放的生命","北京 北京"],
        "wife_now":{
            'name':"章子怡",
            "age":62,
            "爱好":"打麻将"
        },
        "children": [{'id':1,"name":"汪涵"},{"id":2,"name":"汪才子"}]
    }
    print(wf['wife_now']['爱好'])  #打麻将
    print(wf["wife_now"]["name"])   #章子怡
    print(wf["children"][0]["name"])   #汪涵
    # 汪峰的小儿子改名成  汪晓峰
    wf['children'][1]['name'] = "汪晓峰"
    print(wf)
    View Code
  • 相关阅读:
    Webstorm 下的Angular2.0开发之路
    利用hexo+github+nodejs搭建自我博客的一天
    滑稽的下午angularjs 2.0管道的使用
    DNGuard 标准版 v2.90发布
    DNGuard Enterprise v2.92 released
    C#复杂表达式的问题
    直接在.Net程序(C#)中执行 native code
    采用Native 引导方式的.Net加密保护
    DNGuard HVM Trial V2.82 发布
    DNGuard Enterprise v2.90 released
  • 原文地址:https://www.cnblogs.com/zhang-yl/p/9838939.html
Copyright © 2020-2023  润新知