• 字典


    字典

    字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是
    唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后将key-value保存在这个地址中.
    这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key'必须是可hash的,
    如果你搞不懂什么是可哈希, 暂时可以这样记, 可以改变的都是不可哈希的。
    那么可哈希就意味着不可变. 这个是为了能准确的计算内存地址⽽规定的.
    已知的可哈希(不可变)的数据类型: int, str, tuple, bool
    不可哈希(可变)的数据类型: list, dict, set
    语法 : {key1: value1, key2: value2....}
    注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据
    # 合法
    dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帅哥', '美⼥'], (1, 2, 3): '毛毛'}
    print(dic[123])
    print(dic[True])
    print(dic['id'])
    print(dic['stu'])
    print(dic[(1, 2, 3)])
    # 不合法
    # dic = {[1, 2, 3]: '周杰伦'} # list是可变的. 不能作为key
    # dic = {{1: 2}: "哈哈哈"} # dict是可变的. 不能作为key
    dic = {{1, 2, 3}: '呵呵呵'} # set是可变的, 不能作为key

    dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的.

    而hash表不是连续的. 所以不能进⾏切片⼯作. 它只能通过key来获取dict中的数据

    一.字典的增删改查

    dic[key] = value

    dic.setdefault(key,value) 如果键在字典中存在不进行任何操作,否则就添加

    可以通过key查询,没有这个key返回None

    ====================================================================

    pop(key) 有返回值 返回的是被删除value
    del dic[key]
    popitem() 随机删除
    clear() 清空字典


    ======================================================================

    dic[key] = value
    dic.update(字典)

    =======================================================================

    get(key)
    dic[key]
    for 循环
    setdefault(key)

    =======================================================================

    二.其他操作

    keys 获取到所有的键存在一个高仿的列表中

    values 获取到所有的值存在一个高仿的列表中

    items 获取到所有的键值对已元祖的形式存在一个高仿的列表中

    解构:

    a,b = 1, 2

    a,b = (1,2)

    a,b = [1,2]

    三.字典嵌套

    dic = {
           'name':'小王',
           'age':43,
           'wife':{
               'name':'小章',
               'age':39,
               'salary':100000
            },
            'baby':[
               {'name':'熊大','age':18},
               {'name':'熊二','age':15},
            ]}
    dic['baby'][0]['age'] = 19
    print(dic)
     
  • 相关阅读:
    MVC的各个部分都有那些技术来实现?如何实现?
    JRE、JDK、JVM 及 JIT 之间有什么不同
    什么是竞态条件?举例说明
    【Spring】No converter found for return value of type: class java.util.ArrayList
    【Spring】org.springframework.web.context.ContextLoaderListen 报错
    【Spring】The matching wildcard is strict……
    【MySQL】目录、文件权限问题
    线程和锁
    【Git】Found a swap file by the name ".git/.MERGE_MSG.swp"
    【Maven】Mac 使用 zsh 后 mvn 命令就无效
  • 原文地址:https://www.cnblogs.com/zhao-ting/p/9401657.html
Copyright © 2020-2023  润新知