zoukankan      html  css  js  c++  java
  • python全栈学习--day5

    字典

    特点:字典是python中唯一的映射类型,采用键值对(key-value) 的形式存数据。

    存储大量的数据,是关系型数据,查询数据快。

    字典初始说明:

    遍历字典从列表开始,列表是从头便利到尾的。字典使用二分查找。先劈一半,不匹配,在劈一半,再找。最后找到对应的值。

    如果字典的数据是1到~ 00

    例如:

    要找75

    第一次,先找50。 50 比 75小,比较
    第二次,找50~100之间的。劈一半,找75

    对于字符串查找

    每一个字符串,都有一个hash值,对应指定的字符

    每个字符,hash表,都设定好了,是唯一的。

    示例:

    print(hash('a'))
    

      输出:

    如果重新执行后的效果为以下:

    数据类型的分类:

      1. 可变数据类型(不可哈希):list,dict,set

      2. 不可变数据类型(可哈希):int, bool,str,tuple

      容器类(承载各种数据类型):list, tuple ,dic

    示例:

    a = 'superman'
    a.capitalize()

    对于原数据,没有改变。但开辟了新的内存空间。

      字典的键:必须是不可变数据类型

      字典的值:任意数据类型

    数据类型分类,主要是可变和不可变

    字典的键是唯一的。

    字典的顺序:严格意义上讲,是无序的。

      3.5之前,字典是无序的

      3.6开始,字典创建的时候,是按照一定的顺序插入的值,看起来是有序的。

    字典的增,删,改,查

    #第一种:有则覆盖,无则添加
    dic = {'name':'superman'}
    dic['hobby'] = 'girl'
    print(dic)
    
    #第二种 setdeafult
    #这个没有加键值,None也是数据
    dic = {'name':'superman'}
    dic.setdefault('hobby','girl')
    print(dic)
    

     输出效果:

    dic.setdefault('hobby') 虽然只指定了key,没有指定value,默认会填充None

    添加键值对

    dic = {'name':'superman','age':21}
    dic.setdefault('hobby','girl')
    print(dic)
    

     输出结果:

    添加一个已经存在的key

    dic = {'name':'superman','age':21}
    dic.setdefault('name','江江')
    print(dic)
    

     输出

     

     上述2个添加的方法,只能一个个添加。 

     删

    dic = {'name':'superman','age':21}
    print(dic.pop('age'))
    print(dic)
    

    执行后输出结果:

    删除一个不存在的key

    dic = {'name':'superman','age':21}
    print(dic.pop('hobby'))
    

    执行后输出结果:

    删除一个不存在的key,并指定默认返回值None

    dic = {'name':'superman','age':21}
    print(dic.pop('hobby',None))
    print(dic)
    

     执行输出:

     推荐使用上述方法,删除一个key。因为如果key不存在时,不会报错,返回None。程序员最怕报错了!

    #clear()清空
    dic = {'name':'superman','age':22}
    dic.clear()
    print(dic)
    

    执行后输出:

    #删除字典
    dic = {'name':'superman','age':21}
    del dic['hobby']
    print(dic)
    

     执行后输出结果:

    推荐使用pop删除,并指定None

     

     改

    dic = {'name':'superman','age':21}
    dic['name'] = 'zhangsan'
    print(dic)
    

    执行输出:

    update() 针对2个字典的修改 

    dic = {'name':'superman','age':21}
    dic2 = {'name':'john','alan':76}
    dic2.update(dic)
    print(dic)
    print(dic2)
    

     执行输出结果:

    说明:

    update()修改原则

    有相同的就覆盖,没有的就添加

    通过key查找

     
    dic = {'name':'superman','age':21}
    print(dic['name'])

    执行后输出结果:

    通过value 查找

     

    dic = {'name':'superman','age':21}
    print(dic['superman'])
    

    执行后报错:

    注意:字典只能通过key查询,不能通过value查询,否则报错

     

    #get()通过key 查询
    dic = {'name':'superman','age':21}
    print(dic.get('name'))
    

      执行后输出:

    #查询一个不存在的key
    dic = {'name':'superman','age':21}
    print(dic.get('hobby'))
    

      执行后输出为:None

     默认的None返回值是可以改变的

     

    dic = {'name':'superman','age':21}
    print(dic.get('hobby','查询失败!'))
    

      执行后输出的结果:

     

    #如果需要查询多个key,请使用for循环
    dic = {'name': 'superman', 'age': 21}
    for i in dic:
        print(i)
    

      

    #其它操作方法:
    dic = {'name': 'superman', 'age': 21}
    print(dic.keys())
    print(type(dic.keys()))
    

      执行后输出结果:

    # keys()方法输出的数据是一个特殊类型,它相当于把所有的key放到了一个容器里面。
    # 它类似于列表的容器,当它并不是列表。
    #它可以循环
    dic = {'name': 'superman', 'age': 21}
    for i in dic.keys():
        print(i)
    

    执行后输出结果:

    # values()
    # 把所有的value放到一个容器里面
    dic = {'name': 'superman', 'age': 21}
    for i in dic.values():
        print(i)
    

    执行后输出:

      

    # items()
    # 将键值对作为一个整体,放到元组中。集中放到一个容器中。
    dic = {'name': 'superman', 'age': 21}
    for i in dic.items():
        print(i)
    

    执行输出结果:

     

    dic = {'name': 'superman', 'age': 21}
    print(list(dic.keys()))
    

      执行输出结果:

     

     

      

      

    
    
    
  • 相关阅读:
    用于json的 .ashx 小细节
    (转)写让别人能读懂的代码
    Mvc 中ViewBag Model 查找不到解决
    Windows 2008 R2 配置 DNS 实现二级域名
    Windows Server 2008 DNS服务器安装与配置
    【iOS】swift init构造器
    【iOS】OC-UTC日期字符串格式化
    android使用sharesdk的小感
    【iOS】Swift GCD-下
    【iOS】Swift GCD-上
  • 原文地址:https://www.cnblogs.com/haowen980/p/8625084.html
Copyright © 2011-2022 走看看