• dict--新华字典,没有新华


    字典,就是一种基础的数据类型,是唯一的映射类型.就像新华字典一样,我们知道要查的字之后,找到他,我们就能查看这个字下面的解释,这个解释就是这个字的内容.

    字典是无序的,这种无序是指他无法像列表一样人为的排序,在python3.6是按照创建的顺序打印出来.python3.5及以下是随机顺序打印的,但不管怎么打印出来,他无序的这个属性是不变的

    涉及到两个方面,第一个是,键值存入时是按照哈希算法算出存放的位置存入,所以我们不能使用索引来寻找键值对

           第二个就是,字典写入时如果超出了他的存放空间,他会扩容,扩容时会进行重新计算后排序

    字典是可变的数据类型,字典中的元素是一个一个的键值对.要记住的是键值对的键必须是不可变得,所以列表/集合/字典/含有列表的元组是不可以作为键使用的.值就没那么多讲究了

    前面提到字典不能使用索引,那么我们应该使用什么方法提取字典中的值呢?

    我们知道字典中的键是不可变的,那么我们就可以使用键来查找.比如我们有个字典dic,dic[键],就可以像列表的索引那样把字典的值拿出来了

    还是分为四个方面说下基本方法吧:

    一. 增加

    1.简单粗暴

    dic[键] = 值  就是添加了一个新的键值对进去,存在就是修改了,不在就是添加,不管怎么样,我就是要有这么一个键值对

    dic = {1:2,3:4,5:6}
    dic[''] = '爱你'
    print(dic)
    >>>{1: 2, 3: 4, 5: 6, '': '爱你'}
    View Code

    2.dic.setdefault(键,值)

    这个就温和一些了,若是存在这个键,就不进行对这个字典修改,不存在,才会添加.

    还要说一下,若是只填写了键,没有填值的话,键值对照样会创建成功,值默认就是None了

    dic = {1:2,3:4,5:6}
    dic.setdefault(7,8)
    print(dic)
    >>>{1: 2, 3: 4, 5: 6, 7: 8}
    
    #若是有这个键
    
    dic = {1:2,3:4,5:6}
    dic.setdefault(5,8)
    print(dic)
    >>>{1: 2, 3: 4, 5: 6}
    View Code

     二. 删除

    1.dic.pop(键)

    指哪删哪,删就是删整个键值对,返回值是删除的键值对的值

    dic ={1: 2, 3: 4, 5: 6}
    dic.pop(3)
    print(dic)
    >>>{1: 2, 5: 6}
    View Code

    2.dic.popitem()

    这个删除就是随机删除,在python3.6就是默认删除最后一个了 ,popitem是有返回值的,返回的是以元组形式返回的删除的键值对.

    dic ={1: 2, 3: 4, 5: 6}
    print(dic.popitem())
    print(dic)
    >>>(5,6)
    >>>{1: 2, 3:4}
    View Code

    三. 修改

    修改的原理就是存在就修改,不在就是添加

    1.简单粗暴用法^_^

    dic[键] = 值,是不是和增加一样的简单粗暴

    dic = {1:2,3:4,5:6}
    dic[3] = '1+2'
    print(dic)
    >>>{1: 2, 3: '1+2', 5: 6}
    View Code

    2. dic.update(字典)

    dic.update()的括号中放的是字典,这个字典的键相同,就修改值,不同的就添加

    dic = {'a':1,'b':2,'c':3}
    dic.update({'c':'1+2','d':4})
    print(dic)
    >>>{'a': 1, 'b': 2, 'c': '1+2', 'd': 4}
    
    #括号内放的是字典,所以我们可以理解为使用后面那个字典去更新前面这个字典
    dic = {'a':1,'b':2,'c':3}
    dict = {'c':'1+2','d':4}
    dic.update(dict)
    print(dic)
    >>>{'a': 1, 'b': 2, 'c': '1+2', 'd': 4}
    
    #那么这种写法也是可以的
    View Code

     四. 查找

    查就是像新华字典一样,给你键,找的到,就把键对应的值给你

    s = dic.get(键,"返回值")

    dic = {'a':1,'b':2,'c':3}
    s = dic.get('a')
    print(s)
    >>>1
    #若是填写的键是字典中没有的,就会返回None,可以自定义返回值
    dic = {'a':1,'b':2,'c':3}
    s = dic.get('d')
    print(s)
    s2 = dic.get('d','找不到')
    print(s2)
    >>>None
    >>>'找不到'
    View Code

    tips.其他操作

    1.先说3个差不多的吧,这3个输出的都是高仿列表,为什么说是高仿呢,因为他不能像列表那样使用索引,只能使用for循环

    dic.keys()  提取字典中的所有键

    dic = {'a':1,'b':2,'c':3}
    print(dic.keys)
    >>>dict_keys(['a', 'b', 'c'])
    View Code

     dic.values()  提取字典中所有值

    dic = {'a':1,'b':2,'c':3}
    print(dic.values())
    >>>dict_values([1, 2, 3])
    View Code

    dic.items()  提取字典所有的键值对

    dic = {'a':1,'b':2,'c':3}
    print(dic.items())
    >>>dict_items([('a', 1), ('b', 2), ('c', 3)])
    View Code

       这3个方法,还是需要使用for循环拿出结果.但是我们for循环字典就可以直接拿出字典的键了,所以这3个是没用的

    dic = {'a':1,'b':2,'c':3}
    #提取键
    for i in dic:
        print(i)
    #提取值
    for i in dic:
        print(dic[i])
    #提取键值对
    for i in dic:
        print(i,dic[i]
    for循环

     2. frozenset()

    前面提到,集合是不能作为字典的键的,那么我非要让他作为字典的键呢?调皮~

    dic = {'a':1,'b':2,'c':3}
    s = {1,2,3,4,5}
    dic[frozenset(s)] = 666
    print(dic)
    >>>{'a': 1, 'b': 2, 'c': 3, frozenset({1, 2, 3, 4, 5}): 666}
    #这个方法意义何在,,
    View Code

     3.dic.fromkeys(键,值)

    批量创建值相同的键值对

    dic = {}
    dic = dic.fromkeys(['a','b','c'], [1,2])
    # 第一个是键, 第二个是值
    print(dic)
    dic["a"].append(3) 
     # 所有的值都会添加,只有列表会全添加,因为列表是可变的
    print(dic)
    View Code
  • 相关阅读:
    SpringCloud(三):服务消费以及负载均衡(RestTemplate+Ribbon)
    SpringCloud(二):服务的注册与发现(Eureka)
    SpringCloud(一):了解SpringCloud
    SpringBoot(十二):SpringBoot整合Mybatis-Plus
    SpringBoot(十一):SpringBoot整合Redis
    idea使用maven中的tomcat插件开启服务出现java.net.BindException: Address already in use: JVM_Bind :8080错误原因
    SSM框架之SpringMVC(6)异常处理及拦截器
    SSM框架之SpringMVC(5)文件上传
    SSM框架之SpringMVC(4)返回值类型及响应数据类型
    SSM框架之SpringMVC(3)常用注解
  • 原文地址:https://www.cnblogs.com/chenzhiming/p/10015994.html
Copyright © 2020-2023  润新知