zoukankan      html  css  js  c++  java
  • Python——数据类型之dict

    字典,相当于一个列表,不过列表的索引是数字,字典的索引是数字或者字符串。

    1、字典的访问

    字典是典型的key-value结构,一个key对应着一个value,key就是索引,value就是要保存的值

    score={'Albert':99, 'QQ':88}
    print(score['Albert'])#根据key访问value
    
    score['XP']=77#新建一个key-value对
    print(score)
    
    print('#遍历value')
    for i in score:#遍历value
            print(i)
            
    print('#遍历key和value')
    for key,value in score.items():
            print(key,value)

    输出

    99
    {'Albert': 99, 'QQ': 88, 'XP': 77}
    #遍历value
    Albert
    QQ
    XP
    #遍历key和value
    Albert 99
    QQ 88
    XP 77

    这样就很方便的解决了索引不是数字的情况了。

    字典的底层其实是散列表,或者叫hash表。

    2、字典的方法

    (1)clear(self):清除所有内容,将字典变为None。

    (2)copy(self):复制一个字典。(这里注意,不要直接a=b,就像C里面数组的复制那样,a=b只是把b的地址赋给a了,修改a的时候就是修改b。用copy函数就可以把a和b分开。)

    b={'Albert':99, 'QQ':88}
    a=b.copy()
    a['Albert']=0
    print(b)
    
    b={'Albert':99, 'QQ':88}
    a=b
    a['Albert']=0
    print(b)

    输出

    {'Albert': 99, 'QQ': 88}
    {'Albert': 0, 'QQ': 88}

    这就可以看出来copy与直接赋值的区别了。

     (3)fromkeys(*args, **kwargs):根据key创造一个字典

    name=['Albert', 'QQ']
    score=10
    
    a=dict.fromkeys(name,score)
    print(a)
    
    b=dict.fromkeys(name)
    print(b)

     输出

    {'Albert': 10, 'QQ': 10}
    {'Albert': None, 'QQ': None}

     (4)get(self, k, d=None):如果k(key)在字典中,则返回value。如果不在字典中,就返回d(default)默认返回None

    a={'Albert':99, 'QQ':88}
    print(a.get('QQ'))
    print(a.get('XP'))
    print(a.get('XP',100))

    输出

    88
    None
    100

    (5)items(self):返回一个包含key和value的集合,通常用来字典里的key和value

    a={'Albert':99, 'QQ':88}
    for key,value in a.items():
            print(key,value)

    输出

    Albert 99
    QQ 88

    (6)keys(self)返回一个只包含key的集合,通常用来字典里的key

    a={'Albert':99, 'QQ':88}
    for key in a.keys():
            print(key)

     输出

    Albert
    QQ

    (7)pop(self, k, d=None):删除某个k(key),返回相应的value,如果k找不到,就返回d,d默认为None,会抛出KeyError

    a={'Albert':99, 'QQ':88}
    print(a.pop('QQ'))
    print(a)
    print(a.pop('XP','No'))
    a.pop('XP')#没有指定d

    输出

    88
    {'Albert': 99}
    No
    Traceback (most recent call last):
      File "C:/Users/admin/PycharmProjects/temp.py", line 15, in <module>
        a.pop('XP')
    KeyError: 'XP'

     (8)popitem(self):也是删除一对Key-Value。但是他会把这一对Key-value当做元组返回。(字典为空也会报错)

    (9)setdefault(self, k, d=None):相当于get()方法获取key的value。但是如果key不存在,他会新建一个,并设value为d,并返回d

    a={'Albert':99, 'QQ':88}
    print(a.setdefault('QQ'))
    print(a)
    print(a.setdefault('XP',77))
    print(a)

    输出

    88
    {'Albert': 99, 'QQ': 88}
    77
    {'Albert': 99, 'QQ': 88, 'XP': 77}

    (10)update(self, E=None, **F)用字典EF更新字典

    If E is present and has a .keys() method, then does:  for k in E: D[k] = E[k]
    If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
    In either case, this is followed by: for k in F: D[k] = F[k]
    a={'Albert':99, 'QQ':88}
    E={'Albert':11, 'QQ':22}
    F=[33,44]
    print(a)
    a.update(E)
    print(a)

    输出

    {'Albert': 99, 'QQ': 88}
    {'Albert': 11, 'QQ': 22}
    (11)values(self):主要用来遍历values
    a={'Albert':99, 'QQ':88}
    print(a.values())
    for v in a.values():
        print(v)

    输出

    dict_values([99, 88])
    99
    88

           常用的这几个对象的所有方法的用法算是看完了,但是我不能保证我都记住了,有个印象就好。用的时候想到有这个方法,再过来查看一下就行,用多了就记住了。

  • 相关阅读:
    【转】浅谈MVC与三层架构
    【转】小结登录的几种交互方式
    【转】 App架构设计经验谈:接口的设计
    【转】JS编码解码、C#编码解码
    jQuery 判断是否包含某个属性
    jQuery on()方法
    常用正则表达式大全
    Fiddler 抓取手机APP数据包
    [Asp.net]通过uploadify将文件上传到B服务器的共享文件夹中
    ★电车难题的n个坑爹变种
  • 原文地址:https://www.cnblogs.com/albert-yzp/p/10146630.html
Copyright © 2011-2022 走看看